Чем больше я использую ASP.NET, тем больше if (!IsPostBack) {}
кажется бессмысленным...
Первый пример:
Например, я просто решил проблему с Google, они сказали это как часть решения:
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) {}
? Я предполагаю, что это связано только с создаваемыми элементами управления.