CSHTML MVC ASP.NET 之外的 C# 方法的正确位置



在我看来....CSHTML 在顶部的加载器,例如用于 SVG

@functions {
  public string GetSVG(string path)
  {
    return File.ReadAllText(Server.MapPath(path));
  }
}

但正是我在"几个视图"中需要的这个功能......我可以在哪里放置此方法?

HomeController.cs? <- 它不是"完美"的解决方案,因为在我的第二个控制器中.cs我也需要这种方法。

如果你的实现与每个控制器不同,那么你可以有一个抽象类,如下所示。

public abstract class SVG
{
    public abstract string GetSVG(string path);
}

public class MyController : SVG
{
    public override string GetSVG(string path)
    {
         // your implementation
    }
}

否则,请使用静态类并从任何控制器调用 GetSVG 方法。

通常,

当功能对特定视图关闭时,会使用@functions。如果它是一个共享函数,那么任何类中的静态函数或 html 助手都会做得更好。

最新更新