ti-enxame.com

Implementação do IsPostBack no carregamento da página

Quanto mais eu uso o ASP.NET, mais if (!IsPostBack) {} parece inútil ...

Primeiro exemplo:

Por exemplo, eu apenas pesquisei no Google um problema, eles disseram usar isso como parte da solução:

if (!Page.IsPostBack)
{
   Page.LoadComplete += new EventHandler(Page_LoadComplete);
}

Que funciona exatamente como codificado, o LoadComplete será acionado apenas na primeira carga. Depois de clicar em um botão ou em qualquer coisa que desencadeia uma postagem, o evento LoadComplete fica sem ativação, ignorando o manipulador de eventos. Portanto, sua "correção" funciona apenas na primeira carga = sem valor. Comentei prontamente a if (!Page.IsPostBack) {} e agora o evento sempre dispara conforme desejado.

Segundo exemplo:

Estou tentando conectar eventos a um botão criado dinamicamente (que, a propósito, não consigo trabalhar [GRR!]). Vejo exemplos mostrando isso:

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);

Como no primeiro exemplo, entendo que o evento não seria fisgado após o carregamento da primeira página, portanto, o botão fica "inerte" após um clique (porque o clique acionou uma postagem).

Questão:

Quando você deve usar if (!IsPostBack) {}? Acho que isso tem a ver apenas com controles criados por marcação.

20
Yerg

Em resumo, você o usa sempre que precisar executar algo SOMENTE no primeiro carregamento.

O uso clássico de Page.IsPostBack é a ligação de dados/inicialização de controle.

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

Os itens persistentes em ViewState e ControlState não precisam ser recriados em cada postagem, portanto, verifique esta condição para evitar a execução de código desnecessário.

Outro uso clássico é obter e processar parâmetros Querystring. Você não precisa fazer isso no postback.

17
Claudio Redi

Quando não há necessidade de repetir a operação além da primeira vez.

use-o com operações caras (como obter dados de um banco de dados ou preencher ListItems) que devem ser executadas somente na primeira vez em que a página ou o controle é carregado. Se a página for postada no servidor e depois recarregada, não há necessidade de repetir a operação. Ao testar o valor do IsPostBack, você pode pular a operação cara,

6
Spooks

É para processar dados de formulário.

Se você deseja manipular dados POST, você só deseja fazê-lo se a página realmente postou dados, e não no primeiro carregamento. Portanto, o sinalizador IsPostBack.

4
jvenema

O que pode acontecer se você causar uma postagem é que você pode alterar o estado de seus controles, sem querer. Por exemplo, ao usar uma visualização em grade, se você postar de volta durante o modo de edição, não terá mais acesso aos seus campos editados.

Muitas vezes, você precisa impedir que as informações desapareçam em uma página quando você acessa o servidor. Esse é o ponto de

if(!Page.IsPostBack)
3
Brett
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();
    }
}
1
Yasir Antaal

Seus manipuladores de eventos devem ser conectados sempre que o evento puder ser acionado (independentemente do status PostBack)

Além disso, ao adicionar controles dinamicamente, observe o asp ciclo de vida da página

1
StuartLC

Além disso, você deve usar IsPostBack se desejar inicializar controles, caso contrário, eles serão revertidos para o padrão em cada carregamento. Isso confundirá o usuário, pois ao tentar usar o formulário, seus valores inseridos serão redefinidos para os padrões.

0
logain

Primeiro, você precisa entender o que é postagem, quando você inicia seu projeto no Visual Studio,
se você tem um if statement que verifica se isPostBack é true ou false no seu Page_Load método, neste ponto, isPostBack é false, significa que não é um postback, então o que é postback,
agora clique em um button (se você não tiver um botão, adicione um eo método de clique no botão também). Nesse momento, você envia uma solicitação de volta ao servidor, o servidor, em seguida, resposta, esse processo é o chamado postback, que é acionado ao clicar em button,

uma coisa que você realmente precisa notar, o Page_Load o método será executado novamente, não apenas o Button_click _ o método será executado, então agora, o isPostBack é true, significa que é postback, sim, é realmente um postback, porque você clicou no botão.

0
Zhenxiao Hao