Подтвердить что ты не робот

Реализация IsPostBack при загрузке страницы

Чем больше я использую 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) {}? Я предполагаю, что это связано только с создаваемыми элементами управления.

4b9b3361

Ответ 1

Короче говоря, вы используете его каждый раз, когда вам нужно что-то выполнять ТОЛЬКО при первой загрузке.

Классическим использованием Page.IsPostBack является инициализация привязки данных/управления.

if(!Page.IsPostBack)
{
   //Control Initialization
   //Databinding
}

Вещи, которые сохраняются в ViewState и ControlState, не нужно воссоздавать при каждой обратной передаче, поэтому вы проверяете это условие, чтобы избежать выполнения ненужного кода.

Другим классическим использованием является получение и обработка параметров Querystring. Вам не нужно делать это при обратной передаче.

Ответ 2

Если нет необходимости повторять операцию, отличную от первого раза.

используйте его с дорогостоящими операциями (такими как получение данных из базы данных или заполнение ListItems), которые должны выполняться только при первом загрузке страницы или элемента управления. Если страница отправлена ​​на сервер и затем перезагружена, нет необходимости повторять операцию. Проверяя значение IsPostBack, вы можете пропустить дорогостоящую операцию,

Ответ 3

Он для обработки данных формы.

Если вы хотите обрабатывать POSTED-данные, вы хотите сделать это только в том случае, если на странице действительно размещены данные, а не при первой загрузке. Следовательно, флаг IsPostBack.

Ответ 4

Что может произойти, если вы вызываете обратную передачу, вы можете изменить состояние своих элементов управления, не имея значения. Например, при использовании gridview, если вы вернете в режим редактирования, у вас больше не будет доступа к вашим редактируемым полям.

Часто вам нужно сохранить информацию от исчезновения на странице при попадании на сервер, это точка

if(!Page.IsPostBack)

Ответ 5

Обработчики событий должны быть подключены каждый раз, когда событие может быть запущено (независимо от состояния PostBack)

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

Ответ 6

protected void Page_Load(object sender, EventArgs e)            
{
    if (!IsPostBack) { 
        SqlConnection conn = new SqlConnection("Data Source=-----; Database=-----; Integrated Security=True");
        SqlDataAdapter da = new SqlDataAdapter();
        conn.Open();
        da.SelectCommand = new SqlCommand("Select Command",conn);
        conn.Close();
        DataTable dt = new DataTable();
        da.Fill(dt);

        ddlSearch.DataSource = dt;
        ddlSearch.DataTextField = "---";
        ddlSearch.DataValueField = "---";
        ddlSearch.DataBind();
    }
}

Ответ 7

Кроме того, вы должны использовать IsPostBack, если вы хотите инициализировать элементы управления, иначе они будут возвращены к умолчанию по каждой загрузке. Это смущает пользователя, поскольку, когда они пытаются использовать форму, их введенные значения получат reset по умолчанию.

Ответ 8

Сначала вам нужно понять, что такое postback, когда вы запускаете свой проект в Visual Studio,
если у вас есть if statement, который проверяет, есть ли isPostBack true или false в вашем методе Page_Load, на данный момент isPostBack есть false, означает, что это не postback, тогда что такое postback,
теперь нажмите button (если у вас нет кнопки, добавьте один и метод нажатия кнопки), на этот момент вы отправляете запрос обратно на сервер, затем сервер отвечает, этот процесс является так называемый postback, который запускается нажатием button,

одно замечание, которое вам действительно нужно заметить, метод Page_Load будет выполнен снова, будет выполнен не только метод Button_click, поэтому теперь isPostBack есть true, это означает, что это postback, да, это действительно обратная передача, потому что вы нажали кнопку.