c# - MVC 6 IUrlHelper 依赖注入(inject)

标签 c# dependency-injection inversion-of-control asp.net-core-mvc urlhelper

我想通过依赖项注入(inject)使用 IUrlHelper,以便能够使用其功能为不同的 rest 端点生成 uris。我似乎无法弄清楚如何从头开始创建 UrlHelper,因为它在 MVC 6 中发生了变化,并且 MVC 不会自动在 IoC Controller 中提供该服务。

设置是我的 Controller 采用内部模型到 api 模型转换器类,并使用 IUrlHelper(全部通过依赖注入(inject))。

如果 IUrlHelper/UrlHelper 有更好的替代方案,我可以用来为我的 WebApi 操作/ Controller 生成 Uris,我愿意接受建议。

最佳答案

UrlHelper 需要当前的操作上下文,我们可以从 ActionContextAccessor 获取它。我正在使用这个:

        services.AddScoped<IActionContextAccessor, ActionContextAccessor>();
        services.AddScoped<IUrlHelper>(x =>
        {
            var  actionContext = x.GetService<IActionContextAccessor>().ActionContext;
            return new UrlHelper(actionContext);
        });

现在,您可以将 IUrlHelper 直接注入(inject)到任何需要它的地方,而无需跳过 IHttpContextAccessor。

关于c# - MVC 6 IUrlHelper 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059497/

相关文章:

C#动态获取类中的变量名和值

c# - 使用数据集 [asp.net, c#] 在 SQL Server 中添加新行

c# - 在 ASP.NET Core 3.0 Preview 5 或更高版本中配置 AutoFac

java - 如何使用 @Assisted 将 bean "with additional parameters"从 Guice 迁移到 Spring?

c# - 如何将 SQL "WHERE expr IN (query)"翻译成 LINQ?

java - 使用 Spring 引导 play 2.4 Java 应用程序的方法是什么?

javafx - 传递参数JavaFX FXML

c# - ASP.Net MVC5 和 StructureMap4 - 简化方法

asp.net - 具有使用相同接口(interface)(StructureMap 或任何其他 DI 框架)的多个数据库的 IOC

c# - Word 插件安装后无效?