【发布时间】:2010-06-16 18:27:57
【问题描述】:
现在,我正在尝试解决一个 IE6/7 错误,该错误需要使用此 IE 特定注释包装 </a> 结束标记以使某些下拉菜单起作用:
<!--[if IE 7]><!--></a><!--<![endif]-->
不幸的是,我不能像这样将它直接注入到我的查看页面代码中:
<%= Html.ActionLink("LinkName<!--[if IE 7]><!--></a><!--<![endif]-->","Action","Controller") %>
因为 Html.ActionLink 会做安全的事情并过滤掉评论以防止 Javascript 注入攻击。嗯不错。我很好。良好的设计决策。
我想做的是为此编写一个扩展方法,但这个过程让我望而却步,因为我以前没有这样做过。
我认为这会起作用,但 Intellisense 似乎没有采用我编写的这种扩展方法。
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]-->");
}
}
有什么建议吗?
编辑:类名重要吗? (就我而言,我称之为 MyLinkExtensions)
此外,当鼠标悬停在<%= Html.ActionLink() %> 上时,这似乎已经是一种扩展方法。我可以扩展扩展方法吗?
【问题讨论】:
-
您是否尝试过构建应用程序?尽管知道代码没问题,但我遇到过代码被视为非法(或未出现在 Intellisense 中)的情况。
-
是的,我已经尝试过构建它,但没有成功。
标签: asp.net-mvc extension-methods actionlink html.actionlink