我花了两个小时的时间来试图解决这个问题.开始:
我只想创建一个HTMLHelper扩展方法.这已经做了很多次,我知道我正确编码.但是,如果我将代码文件放在App_Code(我认为在MVC世界中没有意义的文件夹!)中,Razor似乎只知道它.
我怎么知道这个?
很简单……我在两个单独的同名文件中有两个相同编码的HTMLHelper扩展方法.
放在〜/ Extensions中的第一个文件包含扩展方法DisplayForProperty
放在〜/ App_Code中的第二个文件包含扩展方法DisplayForProperty2
在视图中,我输入@ Html.Displ- Intellisense只显示我DisplayForProperty2!
我没有@using语句,因为看起来没有必要查看DisplayForProperty2.更不用说,在这种情况下,它不会改变任何东西.
那么,这是为什么呢?这应该是这样吗?这只是剃刀迟钝,还是我是那个被智障的人?
我正在使用VS 2012的完全更新副本.
PS – 另一方面,我是否必须在每个/ Views目录下的每个web.config中放置名称空间引用(如在每个单独的区域中),以及在根目录下?为什么我不能把它放在根目录或根目录/ Views目录中?
最佳答案 您不必将html帮助扩展方法放在App_Code中.虽然有点旧,但asp.net:
http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs上的教程指导你很好.
我通常在MVC项目的根目录下有一个“Helpers”文件夹,每个文件夹都有单独的类文件.它们位于Project.MVC.Helpers命名空间中,我将@using Project.MVC.Helpers添加到我想要使用帮助器的Razor视图中.