【发布时间】:2018-06-18 08:20:42
【问题描述】:
有没有办法强制我的 ASP.NET Core 2.0 应用使用我随处编写的自定义 UrlHelper?
我有一个自定义逻辑的类
public class CustomUrlHelper : UrlHelper { ... }
我希望它可以在任何地方使用,以便根据我们自定义的业务规则生成 url。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-core-2.0
有没有办法强制我的 ASP.NET Core 2.0 应用使用我随处编写的自定义 UrlHelper?
我有一个自定义逻辑的类
public class CustomUrlHelper : UrlHelper { ... }
我希望它可以在任何地方使用,以便根据我们自定义的业务规则生成 url。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-core-2.0
创建一个CustomUrlHelper 和一个CustomUrlHelperFactory。
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 文件并在ConfigureServices 方法中注册CustomUrlHelperFactory。
services.AddMvc();
services.AddSingleton<IUrlHelperFactory, CustomUrlHelperFactory>();
完成此操作后,您的应用将在任何地方使用CustomUrlHelper。这包括从剃须刀页面调用@Url.Action("Index", "Home")。
【讨论】: