有没有办法强制我的ASP.NET Core 2.0应用程序使用我到处写的自定义UrlHelper?
我有一个带有自定义逻辑的课程
public class CustomUrlHelper : UrlHelper { ... }
我希望它可以在任何地方使用,以便根据我们的自定义业务规则生成网址。
答案 0 :(得分:1)
创建CustomerUrlHelper
和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
文件,并在CustomUrlHelperFactory
方法中注册ConfigureServices
。
services.AddMvc();
services.AddSingleton<IUrlHelperFactory, CustomUrlHelperFactory>();
完成此操作后,您的应用将在任何地方使用CustomUrlHelper
。这包括从剃刀页面调用@Url.Action("Index", "Home")
。