Razor @helper in App_Code cannot be accessed

℡╲_俬逩灬. 提交于 2019-12-09 16:51:29

问题


In my App_code, I have a helper function called FormatTelephone(string number) in Formatter.cshtml. I tried to access it in a partial view by @Formatter.FormatTelephone(number). When I test it, it says

Compiler Error Message: CS0103: The name 'Formatter' does not exist in the current context

What is the likely cause of it? Thanks!


回答1:


I ran into this exact problem when deploying the site onto another server. Make sure the App_Code/Formatter.cshtml file is actually copied to the server! My mistake was the file has a build action that was set to 'None'. Right click on the file and select Properties, and then set the Build Action to 'Content'.

NOTE:

If you don't have asp.net mvc 3/4 installed make sure the following dlls are in your bin folder.

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

Scott Hanselman has a blog post about what might be causing your issue. BIN Deploying ASP.NET MVC 3 with Razor to a Windows Server without MVC installed




回答2:


The following works for me in ~/App_Code/Formatter.cshtml:

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

and then in some view:

@Formatter.FormatTelephone("123")



回答3:


I ran into a similar problem. My issue was that I was using razor generator and the name.generated.cs file "Build Action" property was "None" and it needs to be "Compile". The "Build Action" property or the name.cs file was "Content" as per the answer and this explains why the cshtml files calling the method could "see" the method, intellisense worked, I could jump into the definition of the method from the cshtml file. The generated.cshtml file though did not compile.

Change the "Build Action" to "Compile". I am surprised that it was not this already TBH.

I hope this saves someone an hour of mindless repetition.



来源:https://stackoverflow.com/questions/7839435/razor-helper-in-app-code-cannot-be-accessed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!