如何动态覆盖Html.ActionLink生成的URL?

时间:2014-04-30 18:32:38

标签: c# html asp.net asp.net-mvc asp.net-mvc-4

我在现有的ASP.NET MVC网站中实现了一个小实用程序,允许用户覆盖任何页面的当前HTML标题,元描述和friendly-url(包括带有查询字符串的动态页面等)。这非常有效 - 直接访问友好网址时一切都很好。

我希望能够做的是覆盖Html.ActionLink的默认行为,以便我可以检查是否已为请求的操作创建了友好的URL,如果是,则返回友好的URL取代自动生成的网址。

我环顾四周,却找不到具体的东西。我知道我可以实现一个新的HtmlHelper并自己执行此操作,但如果可能的话,我想覆盖现有的行为,而不是必须修改所有当前视图。

有人能帮忙吗?

1 个答案:

答案 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。您必须将命名空间添加到每个视图的顶部,不要将其放在命名空间中,或将其添加到配置文件中

相关问题