我有两个页面,1.aspx,2.aspx
1.aspx
<form id="Form1" method="post" runat="server">
  <asp:Button id="Button1" runat="server" Text="Button"></asp:Button><INPUT id="hdPara" type="hidden" name="hdPara" runat="server">
</form>
1.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
   if (!Page.IsPostBack)
   {
      hdPara.Value="Test";//给隐藏域赋个值
   }
}
private void Button1_Click(object sender, System.EventArgs e)
{
   Response.Redirect("2.aspx");
}然后我希望在2.aspx中获取隐藏域的值,可无法获取到。
2.aspx
<form id="Form1" method="post" runat="server">
  <asp:TextBox id="tbResult" runat="server"></asp:TextBox>
</form>
2.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!Page.IsPostBack)
{
if (Request.Form["hdPara"]==null)
{
tbResult.Text="NULL";
}
else
{
tbResult.Text=Request.Form["hdPara"];
}
}
}显示结果始终都是NULL,请问应该怎么解决

解决方案 »

  1.   

    这样是不能传递得.
    一.你可以在 1.aspx得form表单设置 action="2.aspx"
    然后提交表单到2.aspx
    2.aspx页面 Request.Form["hiddenname"]来获取.二.在你原先得1.aspx.cs页面里面得改成
    Response.Redirect("2.aspx?hdPara="+hdPara.Value)
      

  2.   

    可是如果把1.aspx中的
    <form id="Form1" method="post" runat="server">
    改成
    <form id="Form1" method="post" runat="server" action="2.aspx">的话,页面是不会跳转到2.aspx的啊
      

  3.   

    我关键是想了解一下,如何使用hidden来传递。
      

  4.   

    可是如果把1.aspx中的
    <form id="Form1" method="post">
    改成
    <form id="Form1" method="post"action="2.aspx">的话,页面是不会跳转到2.aspx的啊
    不要 runat="server"
      

  5.   

    Response.Redirect是转到页面而不是提交页面,所以得不到.
    1.aspx:<form action="2.aspx">然后+个提交按钮.就可以在2.aspx得到
    要是用Response.Redirect的话,只能把隐藏域的值取出来作为参数一起传过去
    然后在2.aspx中用Request.QueryString["参数名"]来获得了.
      

  6.   

    Response.Redirect("2.aspx?hdPara="+hdPara.Value);
      

  7.   

    form1.aspx?参数=???接收参数: form2
    Request.QueryString["参数"].Trim()
      

  8.   

    同hertcloud:
    另外把  <asp:Button id="Button1" runat="server" Text="Button"></asp:Button><INPUT id="hdPara" type="hidden" name="hdPara" runat="server">换成html控件
    <input type="submit" value="提交" name="submit">
      

  9.   

    上面的
    在2.aspx中用 Request.QueryString["hdPara"].ToString();
    得到值
      

  10.   

    如果不要不要 runat="server"。
    那我很多服务器端控件不就用不了了嘛?
      

  11.   

    Response.Redirect("2.aspx");
    改为
    Server.Transfer("2.aspx",true);
    试试
      

  12.   

    这样得话,改成这样试试
    1.aspx.cs
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
       if (!Page.IsPostBack)
       {
          hdPara.Value="Test";//给隐藏域赋个值
       }
    }
    private void Button1_Click(object sender, System.EventArgs e)
    {
       hidvalue = hdPara.Value;
       Response.Write("<form id=form2 name=form2 action=2.aspx method=post>");
       Response.Write("<input name=hid type=hidden value='"+hidvalue+"'>");
       Response.Write("</form>");
       Response.Write("<script>");
       Response.Write("document.form2.submit();");
       Response.Write("<script>");
    }
    2.aspx.cs页面得接收换成
    if (Request.Form["hid"]==null)
    {
    tbResult.Text="NULL";
    }
    else
    {
    tbResult.Text=Request.Form["hid"];
    }
    }
    其他都不变...
      

  13.   

    支持rainxiang(楚王好细腰 后宫多饿死)的建议
      

  14.   

    写错了个符号,结束符号忘了 </script>
    改成下面这个
    private void Button1_Click(object sender, System.EventArgs e)
    {
       hidvalue = hdPara.Value;
       Response.Write("<form id=form2 name=form2 action=2.aspx method=post>");
       Response.Write("<input name=hid type=hidden value='"+hidvalue+"'>");
       Response.Write("</form>");
       Response.Write("<script>");
       Response.Write("document.form2.submit();");
       Response.Write("</script>");
    }
      

  15.   

    使用rainxiang(楚王好细腰 后宫多饿死) 的方法,能获取值。
    可是点击IE的后退按钮有问题,无法后退到1.aspx了,点了后退还是2.aspx
      

  16.   

    支持rainxiang(楚王好细腰 后宫多饿死)的建议
      

  17.   

    Response.Redirect("2.aspx");
    呵呵,这个是重定向,相当于给客户端返回一个302消息,消息头有:location=http:...2.aspx。
    然后客户端发送一个get请求到2.aspx。所以你的2.aspx里面的Request.Form理所当然是空的。你试试:
    Server.Transfer("2.aspx");
      

  18.   

    Server.Transfer("2.aspx");   //sorry,上面代码第一个括号是中文括号,需要改一下