我有2个aspx页面,在第1页的回发事件中,我将数据添加到当前上下文,然后执行server.transfer到第2页。这一切都按预期工作,但是由于server.transfer,地址栏仍显示第1页的网址。
当我点击第2页的按钮时,会出现奇怪的现象。在IE(7或8)中,当我点击第2页上的按钮时,页面会按预期发布到第2页。
在Firefox中,当我点击第2页上的按钮时,页面会发布到第1页。
还有其他人经历过这个吗? 难道我做错了什么? 有解决方法吗?
这基本上是第1页中的代码
Context.Items["x"] = x.Checked;
Context.Items["y"] = y.Checked;
Context.Items["z"] = z.Checked;
Server.Transfer( "page2.aspx", false );
答案 0 :(得分:2)
改为进行跨页回发吗?
答案 1 :(得分:1)
您可以尝试将form.action设置为要发布到的特定页面。
第2页的表单加载事件:
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Form.Action = "page2.aspx"
End Sub
这应该保证发布到正确的页面。
答案 2 :(得分:1)
如果您未使用PreviousPage
,则可以使用Response.Redirect("~/Page2.aspx");
。这将通知用户的浏览器页面更改。
或者,如果您使用PreviousPage
,请在所需的PostBackUrl
上设置Button
属性,以使用跨页回复。这样可以正确处理Server.Transfer
逻辑。要访问CheckBox的值,您需要在Page1上创建可通过PreviousPage
访问的公共属性。
因此Page1将在后面的代码中包含这些属性:
public bool xChecked { get x.Checked; }
public bool yChecked { get y.Checked; }
public bool zChecked { get z.Checked; }
Page2将使用PreviousPage:
protected void Page_Load()
{
if(PreviousPage != null && PreviousPage is Page1)
{
if(((Page1)PreviousPage).xChecked)
{
//use xChecked like this
}
}
}