Чем больше я использую ASP.NET, тем больше if (!IsPostBack) {}
кажется бессмысленным ...
Первый пример:
Например, я просто погуглил проблему, они сказали использовать это как часть решения:
if (!Page.IsPostBack)
{
Page.LoadComplete += new EventHandler(Page_LoadComplete);
}
Что делает именно так, как закодировано, LoadComplete будет срабатывать только при первой загрузке. После нажатия кнопки или чего-либо, что вызывает обратную передачу, событие LoadComplete остается отцепленным, таким образом пропуская обработчик события. Поэтому их «исправление» работает только при первой загрузке = ничего не стоит. Я быстро закомментировал if (!Page.IsPostBack) {}
, и теперь событие всегда срабатывает по желанию.
Второй пример:
Я пытаюсь привязать события к динамически создаваемой кнопке (что, кстати, я не могу заставить работать [GRR!]). Я вижу примеры, показывающие это:
myEditToggleButton = new Button();
myEditToggleButton.ID = "editToggleButton";
//^GOTTA HAVE THIS FOR EVENTS TO WORK! (supposedly, I haven't seen it work...)
if (!IsPostBack)
{
myEditToggleButton.Click += new EventHandler(myEditToggleButton_Click);
}
Controls.Add(myEditToggleButton);
Как и в первом примере, я понимаю, что событие не будет перехвачено после загрузки первой страницы, поэтому кнопка «инертна» после одного нажатия (поскольку нажатие вызвало обратную передачу).
Вопрос:
Когда вы должны использовать if (!IsPostBack) {}
? Я предполагаю, что это связано только с элементами управления, созданными на разметке.