所有视图中的单个 .NET Core Razor C# 函数

Dr.*_*gia 7 c# asp.net-mvc razor

我知道有一种方法可以在视图中添加 c# 函数并通过@functions{ ... }在我的视图中使用方法调用它们,但是有没有一种方法可以使用这些函数创建共享视图以包含在控制器视图中,而无需复制同一行代码每一个?我尝试@inject_Layout视图中使用和其他方法,但显然无法调用这些方法。我也尝试创建一个这样的外部类,但我只想在可能的情况下使用视图:

public class Functions : RazorPage<dynamic>
{
    public override Task ExecuteAsync()
    {
        throw new NotImplementedException();
    }

    public string GetTabActive(string lang)
    {
        if (ViewBag.lang.ToString() == lang) return "active";
        return "";
    }
}
Run Code Online (Sandbox Code Playgroud)

Dr.*_*gia 4

我终于找到了一种方法来做到这一点,我需要将类注入到_ViewImports给出的属性名称中,如下所示:

@inject Functions func
Run Code Online (Sandbox Code Playgroud)

并且,在 中StartUp,我添加了一个指向我的抽象类的新服务,如下所示:

services.AddSingleton<Functions>();
Run Code Online (Sandbox Code Playgroud)

因此,在每个视图中,我可以使用模型并像这样调用我的函数:

<h2>@func.MyFunction</h2>
Run Code Online (Sandbox Code Playgroud)