我有一个ASP.Net MVC Portable 是一个包含纯 C# 代码、Razor 视图 (cshtml)、javascript 和 CSS 的项目。它都被嵌入到区域项目的输出 DLL 中。
我想创建一个@helper 函数,该函数可以通过该区域的cshtml 视图访问,我按照Scott Gu 的博客文章进行了设置。根据 Visual Studio 智能感知和编译器,当我尝试像这样访问帮助程序时一切正常:
@Helpers.MyMethod("myInput");
但是当我尝试运行该应用程序时,我收到了一个运行时错误,指出
“当前上下文中不存在名称‘助手’”
我已将 Helpers.cshtml 文件放在 MVC 可移植区域项目根目录中的 App_Code 文件夹中,并将构建操作设置为“嵌入式资源”(因为我需要对其余的 cshtml 文件执行此操作)。
我测试了将 Helpers.cshtml 文件放在我的 ASP.Net MVC 应用程序项目的 App_Code 文件夹中,然后它工作得很好,但是在应用程序项目中使用助手不是一个选项,因为我不想要依赖项从区域到应用程序。
它还可以将 @helper 重写为 @function 并将其放在每个 CSHTML 视图中,但我想避免为每个视图重复此操作。
所以我的问题是为什么应用程序在放置在便携式区域项目中时似乎找不到 Helpers 类,以及我可以做些什么才能在我的区域内拥有可以跨剃刀视图使用的剃刀助手功能。