MVC5区域中的自定义Razor@助手

本文关键字:Razor@ 助手 自定义 区域 MVC5 | 更新日期: 2023-09-27 18:28:32

我有一个MVC项目,它由几个区域组成。

我想编写自定义Razor@helper,它将仅在特定区域内的视图中共享。常见的方法是在存储在项目根目录的App_Code文件夹中的.cshtml文件中编写助手,但这使得这些助手可以从多个区域访问。

有没有办法让剃须刀@helper只分开一个区域?

MVC5区域中的自定义Razor@助手

Razor助手是"public static"类中的"public-static"方法,因此它们可能对所有视图都有用,无论区域如何。

您不必将它们放在应用程序代码中。您可以创建一个类并添加静态扩展方法。如果只想在某些视图中看到它们,请在不同的命名空间中创建它们,并在视图中添加using。

作为一个要工作的自定义助手,您必须在视图的开头声明,或者您可以在视图文件夹中的web.config中注册。例如:

我的自定义助手是:

namespace MyCustomSystem.Web.Helpers
{
    public static class CustomHelpers
    {
        public static MvcHtmlString GroupedActionButtons(this HtmlHelper helper, string controller, long id)
        {
            var stringBuilder = new StringBuilder();
            //Do your logic here.
            return MvcHtmlString.Create(stringBuilder.ToString());
        }
    }
}

在web.config中:

<system.web.webPages.razor>    
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="MyCustomSystem.Web" />
        <add namespace="MyCustomSystem.Web.Helpers" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

这样,只有注册了Helper的区域才能工作,并且不需要在视图中声明using