在跨页回发期间,page_load会覆盖用户输入

时间:2013-03-12 15:39:39

标签: asp.net cross-page-postback

1源页面有一个页面加载方法,如下所示:

protected void Page_Load(object sender, EventArgs e)
        {
                TextBox1.Text = DateTime.Today.AddDays(1).ToShortDateString();
        }

它将导致textbox1.text显示呈现源页面的明天日期。我有这个源页面交叉回到目标页面,并在目标页面加载事件我有

if (Page.PreviousPage != null && PreviousPage.IsCrossPagePostBack == true)
            {
              TextBox SourceTextBox1 = (TextBox)Page.PreviousPage.FindControl("TextBox1");
                if (SourceTextBox1 != null)
                {
                    Label1.Text = SourceTextBox1.Text;
                 }
              }

问题是如果用户更改了textbox1的内容,假设目标页面上的label1应该捕获用户输入并显示它,但现在它只显示我在源页面加载事件中设置的内容。我理解自我页面后期生命周期,但这是跨页回发。 IMO,源页面加载事件与此无关,但为什么它会覆盖用户输入?任何想法。

1 个答案:

答案 0 :(得分:1)

使用if(!IsPostBack)支票围绕此处:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        TextBox1.Text = DateTime.Today.AddDays(1).ToShortDateString();
    }
}

否则,每次回发都会覆盖该值。因此,当您Server.Transfer它到另一个页面时,它已经被更改。