我有两个页面,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.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.aspx得form表单设置 action="2.aspx"
然后提交表单到2.aspx
2.aspx页面 Request.Form["hiddenname"]来获取.二.在你原先得1.aspx.cs页面里面得改成
Response.Redirect("2.aspx?hdPara="+hdPara.Value)
<form id="Form1" method="post" runat="server">
改成
<form id="Form1" method="post" runat="server" action="2.aspx">的话,页面是不会跳转到2.aspx的啊
<form id="Form1" method="post">
改成
<form id="Form1" method="post"action="2.aspx">的话,页面是不会跳转到2.aspx的啊
不要 runat="server"
1.aspx:<form action="2.aspx">然后+个提交按钮.就可以在2.aspx得到
要是用Response.Redirect的话,只能把隐藏域的值取出来作为参数一起传过去
然后在2.aspx中用Request.QueryString["参数名"]来获得了.
Request.QueryString["参数"].Trim()
另外把 <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">
在2.aspx中用 Request.QueryString["hdPara"].ToString();
得到值
那我很多服务器端控件不就用不了了嘛?
改为
Server.Transfer("2.aspx",true);
试试
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"];
}
}
其他都不变...
改成下面这个
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>");
}
可是点击IE的后退按钮有问题,无法后退到1.aspx了,点了后退还是2.aspx
呵呵,这个是重定向,相当于给客户端返回一个302消息,消息头有:location=http:...2.aspx。
然后客户端发送一个get请求到2.aspx。所以你的2.aspx里面的Request.Form理所当然是空的。你试试:
Server.Transfer("2.aspx");