Ao criar um controle da Web, você substituirá ou implementará Page_load
-
02-07-2019 - |
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
?
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.