【问题标题】:Overwriting UrlHelper with a CustomUrlHelper - ASP.NET CORE 2.0使用 CustomUrlHelper 覆盖 UrlHelper - ASP.NET CORE 2.0
【发布时间】: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


    【解决方案1】:

    创建一个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")

    【讨论】:

      猜你喜欢
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多