7

在我的App_code中,我有一个FormatTelephone(string number)Formatter.cshtml. 我试图在部分视图中访问它@Formatter.FormatTelephone(number)。当我测试它时,它说

编译器错误消息:CS0103:名称“格式化程序”在当前上下文中不存在

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

4

3 回答 3

7

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

笔记:

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

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

Scott Hanselman 有一篇关于可能导致您的问题的博客文章。 BIN 将带有 Razor 的 ASP.NET MVC 3 部署到未安装 MVC 的 Windows 服务器

于 2012-11-28T03:26:35.767 回答
1

以下对我有用~/App_Code/Formatter.cshtml

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

然后在某些方面:

@Formatter.FormatTelephone("123")
于 2011-10-20T17:00:58.640 回答
0

我遇到了类似的问题。我的问题是我使用的是剃须刀生成器,而 name.generated.cs 文件的“构建操作”属性是“无”,它需要是“编译”。根据答案,“构建操作”属性或 name.cs 文件是“内容”,这解释了为什么调用该方法的 cshtml 文件可以“看到”该方法,智能感知有效,我可以从cshtml 文件。生成的.cshtml 文件虽然没有编译。

将“构建操作”更改为“编译”。我很惊讶这不是已经 TBH。

我希望这可以节省一个小时的无意识重复。

于 2019-10-24T11:39:16.967 回答