【发布时间】:2013-02-01 01:40:21
【问题描述】:
我花了两个小时的大部分时间试图弄清楚这一点。如下:
我只想创建一个 HTMLHelper 扩展方法。这已经做过很多次了,我知道我的编码是正确的。但是,如果我将代码文件放在 App_Code 中(我认为在 MVC 世界中不再有意义的文件夹!),Razor 似乎只知道它。
我怎么知道的?
很简单...我在两个独立的同名文件中有两个相同编码的 HTMLHelper 扩展方法。
第一个文件,放在 ~/Extensions 中,包含扩展方法DisplayForProperty
第二个文件,放在 ~/App_Code 中,包含扩展方法DisplayForProperty2
在视图中,我输入@Html.Displ- Intellisense 只显示DisplayForProperty2!
我没有@using 声明,因为似乎不需要查看DisplayForProperty2。更不用说,在这种情况下它不会改变任何东西。
那么,这是为什么呢?这甚至应该以这种方式发生吗?这只是剃刀智障,还是我智障?
我正在使用完全更新的 VS 2012 副本。
PS - 另一方面,我是否必须将命名空间引用放在每个 /Views 目录下的每个 web.config 中(如在每个单独的区域中),加上根目录?为什么我不能把它放在根目录或根 /Views 目录中?
【问题讨论】:
-
这是一个网站“项目”吗?如果是这样,请使用 Web 应用程序项目尝试此操作。
-
此项目是使用 Visual Studio 2012 中的 ASP.NET Internet 应用程序模板启动的。
-
您可以将命名空间引用放在应用程序根目录下的 Web.config 中,或者(甚至更好)放在 ~/Views/ 文件夹根目录下的 Web.config 中,与默认文件并列由 MVC 引用。该配置将被任何子目录继承。
标签: asp.net-mvc vb.net asp.net-mvc-4 visual-studio-2012 html-helper