预编译视图的辅助程序

4
我正在使用RazorGenerator预编译我的视图。我还想使用全局Razor助手(在App_Code目录中定义的cshtml文件中)。然而,编译出现了以下错误:

The name 'KarbonHelper' does not exist in the current context

然而,智能感知似乎可以检测到助手方法。我已按照以下博客预编译Razor进行了编译。此外,我注意到助手文件KarbonHelper.cshtml实际上是预编译为预期位置的.cs文件。
obj\CodeGen\App_Code\KoolHelper.cshtml.cs

任何想法或建议都欢迎。
2个回答

1
问题在于由微软的代码控制的App_Code代码生成器会为您创建一个静态方法,而RazorGenerator则会为您创建一个实例方法。

我仍在寻找一种不涉及可怕的黑客行为的解决方法。


1

首先尝试在Views文件夹中的Web.config文件的system.web.webPages.razor部分下添加此内容(将MyProjectBaseNamespace更改为项目基本命名空间的名称 - 通常等于项目名称 - 或者只需查看生成的文件KoolHelper.cshtml.cs使用了哪个命名空间)。

    <add namespace="MyProjectBaseNamespace.App_Code" />

如果仍然存在错误,请在App_Code中的helper的第一行添加此指令:
@* Generator: MvcHelper GeneratePrettyNames : true *@

RazorGenerator将生成一个继承自System.Web.WebPages.HelperPage的类,其中包含静态的@helper方法,并且类名与文件名相同。请参阅指令的更多信息:https://github.com/RazorGenerator/RazorGenerator#special-razor-directives

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接