MVC5区域中的自定义Razor@助手
本文关键字:Razor@ 助手 自定义 区域 MVC5 | 更新日期: 2023-09-27 18:28:32
我有一个MVC项目,它由几个区域组成。
我想编写自定义Razor@helper
,它将仅在特定区域内的视图中共享。常见的方法是在存储在项目根目录的App_Code
文件夹中的.cshtml
文件中编写助手,但这使得这些助手可以从多个区域访问。
有没有办法让剃须刀@helper
只分开一个区域?
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
。