代码之家  ›  专栏  ›  技术社区  ›  jasonmw

IE和Firefox在Server.Transfer之后的不同回发行为

  •  1
  • jasonmw  · 技术社区  · 16 年前

    我有2个aspx页面,在第1页的回发事件中,我将数据添加到当前上下文,然后执行server.transfer到第2页。所有这些都按预期工作,但是由于server.transfer,地址栏仍然显示第1页的url。

    当我点击第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 );
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   Chris    16 年前

    PreviousPage ,你可以用 Response.Redirect("~/Page2.aspx"); 相反这将通知用户的浏览器页面更改。

    或者,如果您正在使用 上一页 PostBackUrl 属性设置在所需的 Button Server.Transfer 要正确处理逻辑。要访问复选框的值,您需要在第1页上设置公共属性,这些属性可以通过 上一页 .

    因此,Page1将在代码隐藏中包含以下属性:

    public bool xChecked { get x.Checked; }
    public bool yChecked { get y.Checked; }
    public bool zChecked { get z.Checked; }
    

    第2页将使用上一页:

    protected void Page_Load()
    {
        if(PreviousPage != null && PreviousPage is Page1)
        {
            if(((Page1)PreviousPage).xChecked)
            {
                //use xChecked like this
            }
        }
    }
    
        2
  •  2
  •   Jon Seigel    16 年前

    是否改为跨页回发?

    MSDN: Cross-Page Posting in ASP.NET

        3
  •  1
  •   Tim Santeford    16 年前

    第2页的表单加载事件:

    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.Form.Action = "page2.aspx"
    End Sub
    

    这将确保发布到正确的页面。

    推荐文章