En ce moment, je suis en train de travailler autour d'un IE6/7 bug qui nécessite l'emballage de la </a>
balise de fermeture avec ce commentaire spécifique IE pour faire un travail de menu déroulant:Possibilité d'écrire une méthode d'extension pour la méthode Html.ActionLink() d'ASP.NET?
<!--[if IE 7]><!--></a><!--<![endif]-->
Malheureusement, je ne peut pas injecter ce directement dans mon code Voir la page comme ceci:
<%= Html.ActionLink("LinkName<!--[if IE 7]><!--></a><!--<![endif]-->","Action","Controller") %>
comme Html.ActionLink fera la chose sûre et filtrer le commentaire pour éviter une attaque par injection Javascript. OK cool. Cela me convient. Bonne décision de conception. Ce que je voudrais faire est d'écrire une méthode d'extension à cela, mais le processus m'échappe comme je ne l'ai pas fait auparavant.
Je pensais que cela fonctionnerait, mais Intellisense ne semble pas prendre cette méthode d'extension que j'ai écrite.
public static class MyLinkExtensions
{
public static string ActionLinkIE(this HtmlHelper htmlHelper,
string linkText, string actionName, string controllerName)
{
return LinkExtensions.ActionLink(htmlHelper, linkText, actionName, controllerName).
Replace(@"</a>", @"<!--[if IE 7]><!--></a><!--<![endif]-->");
}
}
Des suggestions?
EDIT: Le nom de la classe est-il important? (dans mon cas, je l'ai appelé MyLinkExtensions)
De même, lorsque vous passez la souris sur <%= Html.ActionLink() %>
, cela semble être déjà une méthode d'extension. Puis-je étendre une méthode d'extension?
Avez-vous essayé de construire l'application? J'ai eu des cas où le code est considéré comme illégal (ou n'apparaît pas dans Intellisense), bien que je sache que c'est OK – ChrisF
Oui, j'ai essayé de le construire, pas de chance – Pretzel