【问题标题】:How to use injected service from razor layout view in child view如何在子视图中使用剃刀布局视图中的注入服务
【发布时间】:2018-07-27 19:51:00
【问题描述】:

刚刚在 asp.net core razor 视图中了解injected services。但是我还没有弄清楚如何在子视图中使用在布局视图中注入的服务(将被许多视图使用)。

也许在概念上是这样的:

布局视图

@inject IOptions<PortalConfiguration> OptionsPortalConfiguration

<some HTLM markup>
@RenderBody(OptionsPortalConfiguration) <--pass it here???

子视图

Not sure how to reference it.

【问题讨论】:

  • 您是否尝试过将@inject IOp... 添加到具体视图(您要在正文中渲染的那个)?
  • 是的,我可以做到,但似乎并不干燥。如果它已经在父级注入,在子级再次注入似乎是额外的开销。
  • 如果你真的需要在包装器级别,我不认为这是违规行为。而且我也不认为它们是亲子关系,因为“身体视图”不知道是谁渲染的。因此,您也不应该依赖它来获得注入服务。此外,进一步考虑您是否真的需要包装器视图来首先保存注入的服务。

标签: c# asp.net-mvc razor dependency-injection


【解决方案1】:

针对这种情况的另一种方法是创建静态辅助方法,无需注入即可在所有视图中调用。

public static class TestHelperExtensions
{
    public static ITestProvider TestProvider { get; set; }

    public static string Get(this ITestHelper html, string arg)
    {
        return TestProvider.Get(arg);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多