无法访问App_Code中的Razor @helper

时间:2011-10-20 16:57:43

标签: c# asp.net-mvc-3 razor partial-views view-helpers

在我的App_code中,我在FormatTelephone(string number)中有一个名为Formatter.cshtml的辅助函数。我试图通过@Formatter.FormatTelephone(number)在部分视图中访问它。当我测试时,它说

  

编译器错误消息:CS0103:当前上下文中不存在名称“Formatter”

可能的原因是什么?谢谢!

3 个答案:

答案 0 :(得分:7)

在将网站部署到另一台服务器上时遇到了这个问题。确保App_Code / Formatter.cshtml文件实际上已复制到服务器!我的错误是该文件的构建操作设置为“”。右键单击该文件并选择Properties,然后将Build Action设置为“ Content ”。

注意:

如果您没有安装asp.net mvc 3/4,请确保以下dll位于您的bin文件夹中。

  • System.Web.Mvc
  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages
  • System.Web.WebPages.Razor

Scott Hanselman有一篇博文,内容涉及可能导致您的问题的原因。 BIN Deploying ASP.NET MVC 3 with Razor to a Windows Server without MVC installed

答案 1 :(得分:1)

以下内容适用于~/App_Code/Formatter.cshtml

@helper FormatTelephone(string number)
{
    <div>Formatted @number</div>
}

然后在某些观点中:

@Formatter.FormatTelephone("123")

答案 2 :(得分:0)

我遇到了类似的问题。我的问题是我正在使用剃刀生成器,并且name.genic.cs文件的“ Build Action”属性为“ None”,并且需要为“ Compile”。根据答案,“ Build Action”属性或name.cs文件为“ Content”,这解释了为什么调用该方法的cshtml文件可以“看到”该方法,intellisense起作用了,我可以从cshtml文件。虽然generate.cshtml文件未编译。

将“生成操作”更改为“编译”。令我惊讶的是,这已经不是TBH。

我希望这可以节省一个小时的盲目重复。