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

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

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

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

有人能帮忙吗?

最佳答案 我不认为你可以覆盖它自己的动作链接,但你可以创建一个扩展方法并使用它代替actionlink助手

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

点赞