2010-07-15 7 views
0

Je suis en train de réécrire une application Web sur ASP.Net 4.0 et j'ai inclus un contrôle Menu (lié à un fichier SiteMap, naturellement). Bien que j'apprécie la nouvelle propriété RenderingMode, je déteste le fait qu'elle inclue automagiquement du javascript au bas de votre page pour animer le menu. Ma préférence serait pour un meilleur contrôle en utilisant jQuery, mais la désactivation se révèle très difficile. Avec l'aide d'un cogneur très lourd, j'ai traversais au point où je l'ai découvert que le contrôle Menu ASP.Net 4.0 a une méthode OnPreRender interne:Surcharger les méthodes internes protégées

internal void OnPreRender(EventArgs e, bool registerScript); 

Comment remplacer cette méthode afin que je puisse appeler:

base.OnPreRender(e, false); 

Lorsque vous essayez en ce moment, je reçois une erreur de Visual studio en disant que « Pas de surcharge pour la méthode « OnPreRender » prend 2 arguments ».

+0

vous pouvez plus monter sur le côté client http://stackoverflow.com/questions/3425498/disable-javascript-generation-by-asp-net-menu-control/16587087 – Shameed

+0

http: // stackoverflow .com/questions/3425498/disable-javascript-generation-par-asp-net-menu-control/16587087 – Shameed

Répondre

3

Vous devriez être en mesure de se référer à protected internal méthodes telles qu'elles sont protectedouinternal. Si la méthode est juste internal vous pourriez ne pas avoir de chance.

Regarder le contrôle Menu ASP.NET 4, il n'a qu'un seul OnPreRender override:

protected internal override void OnPreRender(EventArgs e); 

Alors vous devriez être en mesure de la remplacer. Je ne sais pas d'où vient OnPreRender(EventArgs e, bool registerScript) (c'est peut-être internal), mais le fait que la classe de base n'est pas (ou c'est inaccessible) est votre problème.

+0

C'est juste interne. Je suppose que c'est la fin de la route. –

+0

Je suppose que l'alternative est de ne pas appeler la base 'PreRender' mais d'écrire votre propre version dans le override. Peut-être que quelque chose comme Reflector pourrait vous aider à comprendre exactement ce que fait 'OnPreRender (EventArgs e, bool registerScript)'. –

0

Ce n'est pas une réponse directe, mais c'est plutôt trivial de vider le contenu de n'importe quelle IHeirarchicalDataSource, comme un fichier de sitemap, vers un <ul> que n'importe quel nombre de produits de menu jquery peut mastiquer et rendre purdy.

Questions connexes