gpt4 book ai didi

asp.net-mvc - 可以为 ASP.NET 的 Html.ActionLink() 方法编写扩展方法吗?

转载 作者:行者123 更新时间:2023-12-04 19:59:37 24 4
gpt4 key购买 nike

现在,我正在尝试解决一个 IE6/7 错误,该错误需要包装 </a>带有此 IE 特定注释的结束标记可使某些下拉菜单正常工作:

<!--[if IE 7]><!--></a><!--<![endif]-->

不幸的是,我不能像这样将它直接注入(inject)到我的 View 页面代码中:

<%= Html.ActionLink("LinkName<!--[if IE 7]><!--></a><!--<![endif]-->","Action","Controller") %>

因为 Html.ActionLink 会做安全的事情并过滤掉评论以防止 Javascript 注入(inject)攻击。嗯不错。我没意见。好的设计决策。

我想做的是为此编写一个扩展方法,但这个过程让我望而却步,因为我以前没有这样做过。

我认为这会起作用,但 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() %> 上时这似乎已经是一种扩展方法。我可以扩展扩展方法吗?

最佳答案

您可能需要将您的扩展命名空间放在 web.config 中:

<pages>      
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Linq" />
<add namespace="Pretzel.Extensions.Html" />
</namespaces>
</pages>

这应该有助于 Intellisense。

关于asp.net-mvc - 可以为 ASP.NET 的 Html.ActionLink() 方法编写扩展方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3056099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com