自定义Razor @helpers在MVC5领域

时间:2015-12-30 08:58:10

标签: c# asp.net-mvc razor asp.net-mvc-5

我有一个MVC项目,包括几个领域。

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

有没有办法让剃刀App_Code只针对一个区域分开?

3 个答案:

答案 0 :(得分:1)

Razor助手是"公共静态"内部方法" public static"因此,无论哪个区域,它们都可能对所有视图都有用。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

要使用的自定义帮助程序,您必须在视图的开头声明,或者您可以在您的视图文件夹中的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