Pergunta

Quando você cria um novo controle do usuário da Web no Visual Studio, por padrão, adiciona o evento Page_load. Qual é a vantagem de usar isso em vez de substituir a base OnLoad evento no controle? É só que o Page_Load Evento dispara antes OnLoad?

Foi útil?

Solução

o OnLoad o método deve ser o lugar onde o Load Evento é levantado. Pessoalmente, sempre tento lidar com o evento, a menos que precise fazer processamento extra ao redor do evento.

Eu recomendo lidar com o próprio evento em circunstâncias normais.

Outras dicas

Você pode encontrar isso artigo No ciclo de vida da página da Microsoft útil.

Como você pode ver acima, isso se resume principalmente à escolha pessoal se essa escolha for feita com conhecimento. A melhor visão geral rápida, mas sólida, que eu vi está em http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx

É realmente apenas uma questão de escolha. Para mim, parece estranho um objeto anexar um evento a si mesmo, especialmente quando há um método que você pode substituir.

Eu acho que a equipe do ASP.NET usou eventos porque esse foi o modelo para o Global.asa no ASP e diminuir a barra para os desenvolvedores que não entendem a herança e a substituição dos métodos virtuais.

Substituir o método requer mais conhecimento sobre o ciclo de vida da página, mas não há nada "errado" nisso.

Leia a seção chamada: "Eventos de página de ligação" Na página do MSDN intitulada: "Modelo de evento de controle do servidor da web asp.net" (Link para a página) Existem algumas declarações úteis como essas:

Uma desvantagem do AutoEventWireUp O atributo é que exige que os manipuladores de eventos da página tenham nomes específicos e previsíveis. Isso limita sua flexibilidade na maneira como você nomeia manipuladores de eventos. Outra desvantagem é que O desempenho é afetado adversamente, porque o ASP.NET procura métodos em tempo de execução. Para um site com volumes de tráfego alto, o impacto no desempenho pode ser significativo.

(AutoEventWireUp A bandeira ativa métodos como Page_load)

Mesmo que você esteja herdando de UserControl, Acho que você deve ficar longe de substituir os métodos protegidos, se não for necessário. o Page_Load existe para facilitar a adição do código específico ao seu UserControl.

Substitua apenas OnLoad Se você precisar de controle absoluto sobre quando (/se) o Load O evento é demitido (o que deve ser raro, IMO).

Eu acho que é o mesmo. IMHO, com eventos, você tem um pouco mais de flexibilidade, porque pode acontecer mais de um ouvinte do seu evento!

Eu acho que há uma diferença potencialmente significativa nos dois métodos.

O que estou me referindo é a capacidade de ter controle sobre a sequência de execução.

Se você estiver substituindo, sabe quando a carga das classes base ocorrerá porque você está chamando. Isso fornece mais controle, mas provavelmente é uma coisa ruim, como muitos argumentam.

Se você usa o evento, não tem garantia em termos de ordem de chamada. Isso força você a escrever um evento de carga, que deve ser agnóstico sobre o que as super classes estão fazendo durante a fase de carga. Eu acho que essa seria a abordagem preferida e talvez seja por isso que o código gerado automaticamente é assim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top