Si l'attribut AutoEventWireup
est défini sur false
, les événements doivent être câblés manuellement. Cependant, je n'arrive pas à tirer le Page_PreInit
. Je suppose que je pourrais faire le wireup arriver trop tard (une fois que nous sommes déjà passé Page_PreInit
), mais je ne suis pas sûr où d'autre pour mettre les wireups.Câblage de l'événement Page_PreInit manuellement, avec AutoEventWireup défini sur false
Par exemple ...
protected override void OnInit(EventArgs e)
{
base.OnInit(e)
PreInit += new EventHandler(Page_PreInit);
Load += new EventHandler(Page_Load);
}
protected void Page_PreInit(object sender, EventArgs e)
{
Response.Write("Page_PreInit event fired!<br>"); //this is never reached
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Page_Load event fired!<br>");
}
Les résultats de code ci-dessus en "événement Page_Load tiré!" en cours d'affichage, mais rien de Page_PreInit
. J'ai essayé base.OnInit(e)
à la fois avant et après les wireups, et cela n'a eu aucun effet.
Le graphique here indique que la méthode OnInit
vient effectivement après l'événement PreInit
. Dans cet esprit, j'ai essayé de surcharger OnPreInit
et de faire la même chose --- aucun effet.
L'article MSDN here dit explicitement que dans le cas de AutoEventWireup
ensemble à false
, les événements peuvent être câblés dans une OnInit
surchargée. L'exemple qu'ils utilisent est Page_Load
, et bien sûr cela fonctionne exactement comme il le fait pour moi, mais ils ne traitent pas que cela ne semble pas fonctionner pour l'événement Page_PreInit
.
Ma question est: comment puis-je l'événement Page_PreInit
câblé dans le cas de AutoEventWireup
mis à false
?
Je comprends qu'il existe des alternatives énumérées sur le MSDN page, telles que l'utilisation du constructeur de la page. Je voudrais savoir comment faire comme ils suggèrent avec OnInit
.
Tu dois le faire dans le constructeur ou avant d'appeler 'base.OnInit'. – Strelok
Malheureusement, mettre les lignes au-dessus de base.OnInit (e) n'a aucun effet, et visant un événement plus tôt (tel que OnPreInit) n'atteindra toujours pas l'événement Page_PreInit. – CptSupermrkt