2011-10-20 158 views
7

在我的App_code中,我在Formatter.cshtml中有一个名为FormatTelephone(string number)的帮助函数。我试图通过@Formatter.FormatTelephone(number)在局部视图中访问它。当我测试了一下,说无法访问App_Code中的Razor @helper

编译器错误信息:CS0103:名称“格式化”不会在目前情况下

什么是它的可能的原因存在吗?谢谢!在~/App_Code/Formatter.cshtml

回答

7

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

注:

如果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

+0

我遇到了同样的情况。帮助程序在部署的服务器中不工作,问题在于,默认情况下,帮助程序文件的构建操作设置为“无”。谢谢你的提示! – vcRobe

1

以下工作:

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

,然后在一些观点:

@Formatter.FormatTelephone("123") 
+0

是的。我想在多个视图中共享这个帮助函数,所以我把它放在'App_code \ Formatter.cshtml'中。我试图在'Views \ Shared \ _InfoView.cshtml'中访问它。但是,它不起作用,并说'Formatter'不存在。这很奇怪,因为当我输入它时,intellisense识别出'Formatter'。 – uni

+0

@uni,你传递了什么参数?它必须是一个字符串。像我在我的例子中那样尝试硬编码一个值。 –

+0

是的,我确定它是一个字符串。 – uni

相关问题