我在现有的ASP.NET MVC网站中实现了一个小实用程序,允许用户覆盖任何页面的当前HTML标题,元描述和friendly-url(包括带有查询字符串的动态页面等)。这非常有效 - 直接访问友好网址时一切都很好。
我希望能够做的是覆盖Html.ActionLink的默认行为,以便我可以检查是否已为请求的操作创建了友好的URL,如果是,则返回友好的URL取代自动生成的网址。
我环顾四周,却找不到具体的东西。我知道我可以实现一个新的HtmlHelper并自己执行此操作,但如果可能的话,我想覆盖现有的行为,而不是必须修改所有当前视图。
有人能帮忙吗?
答案 0 :(得分:2)
我认为你不能覆盖它自己的动作链接,但是你可以创建一个扩展方法并用它代替actionlink helper
using System.Web.Mvc;
using System.Web.Mvc.Html;
public static class HtmlHelperExtensions
{
public static MvcHtmlString CustomActionLink(this HtmlHelper Helper, string LinkText, string ActionName)
{
string link = getCustomName();
if(!String.IsNullOrWhiteSpace(link))
{
return link
}
return helper.ActionLink(LinkText, ActionName);
}
}
然后在您的视图中,您可以使用@ Html.CustomActionLink替换@ Html.ActionLink。您必须将命名空间添加到每个视图的顶部,不要将其放在命名空间中,或将其添加到配置文件中