Пользовательский ввод перезаписывается page_load во время обратной передачи между страницами

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 ответ

Решение

Просто окружите это if(!IsPostBack) проверять:

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

В противном случае значение будет перезаписываться при каждой обратной передаче. Итак, когда вы Server.Transfer это на другую страницу, это уже изменено.

Другие вопросы по тегам