使用CustomUrlHelper覆盖UrlHelper - ASP.NET CORE 2.0

时间:2018-06-18 08:20:42

标签: asp.net asp.net-mvc asp.net-core-2.0

有没有办法强制我的ASP.NET Core 2.0应用程序使用我到处写的自定义UrlHelper?

我有一个带有自定义逻辑的课程

public class CustomUrlHelper : UrlHelper { ... }

我希望它可以在任何地方使用,以便根据我们的自定义业务规则生成网址。

1 个答案:

答案 0 :(得分:1)

创建CustomerUrlHelperCustomUrlHelperFactory

public class CustomUrlHelper : UrlHelper
{
    public CustomUrlHelper(ActionContext actionContext)
        : base(actionContext) { }

    public override string Action(UrlActionContext actionContext)
    {
        var controller = actionContext.Controller;
        var action = actionContext.Action;
        return $"You wrote {controller} > {action}.";
    }    
}

public class CustomUrlHelperFactory : IUrlHelperFactory
{
    public IUrlHelper GetUrlHelper(ActionContext context)
    {
        return new CustomUrlHelper(context);
    }
}

然后打开您的Statup.cs文件,并在CustomUrlHelperFactory方法中注册ConfigureServices

services.AddMvc();

services.AddSingleton<IUrlHelperFactory, CustomUrlHelperFactory>();

完成此操作后,您的应用将在任何地方使用CustomUrlHelper。这包括从剃刀页面调用@Url.Action("Index", "Home")