Asp.net mvc VB.NET中ASP.NET MVC 4 HtmlHelper扩展所需的应用程序代码?
我花了两个小时的时间想弄明白这件事。下面是: 我只想创建一个HTMLHelper扩展方法。这已经做了很多次了,我知道我的编码是正确的。然而,Razor似乎只有在我将代码文件放在App_code(一个我认为在MVC世界中不再有意义的文件夹)中时才知道这一点 我怎么知道的 非常简单…我在两个独立的同名文件中有两个相同编码的HTMLHelper扩展方法 第一个文件位于~/Extensions中,包含扩展方法Asp.net mvc VB.NET中ASP.NET MVC 4 HtmlHelper扩展所需的应用程序代码?,asp.net-mvc,vb.net,asp.net-mvc-4,visual-studio-2012,html-helper,Asp.net Mvc,Vb.net,Asp.net Mvc 4,Visual Studio 2012,Html Helper,我花了两个小时的时间想弄明白这件事。下面是: 我只想创建一个HTMLHelper扩展方法。这已经做了很多次了,我知道我的编码是正确的。然而,Razor似乎只有在我将代码文件放在App_code(一个我认为在MVC世界中不再有意义的文件夹)中时才知道这一点 我怎么知道的 非常简单…我在两个独立的同名文件中有两个相同编码的HTMLHelper扩展方法 第一个文件位于~/Extensions中,包含扩展方法DisplayForProperty 第二个文件位于~/App_代码中,包含扩展方法Displa
DisplayForProperty
第二个文件位于~/App_代码中,包含扩展方法DisplayForProperty2
在视图中,我键入@Html.disf
-Intellisense仅显示DisplayForProperty2
我没有@using
语句,因为查看DisplayForProperty2
似乎不需要该语句。更不用说,在这种情况下,它不会改变任何事情
那么,这是为什么?这应该是这样吗?这只是剃刀的智障,还是我智障
我使用的是VS 2012的完全更新版本
PS-另一个注意事项是,我是否必须将每个web.config中的名称空间引用放在每个/Views目录下(例如,在每个单独的区域中),以及根目录下?为什么我不能把它放在根目录或根/视图目录中?你不应该把html助手扩展方法放在应用程序代码中。asp.net:教程虽然有点老,但对您的指导相当不错
我通常在MVC项目的根目录下有一个“Helpers”文件夹,每个文件夹都有单独的类文件。它们位于
Project.MVC.Helpers
命名空间中,我使用Project.MVC.Helpers将@添加到我想在其中使用helper的Razor视图中。app\u code文件夹仍然是一个特殊文件夹,由项目自动编译和引用。是否检查了在HtmlHelper类上生成的命名空间当你把它放在应用程序代码之外的文件夹中时
可能您遗漏的只是@using指令,它指向视图中的名称空间。您可能需要将包含帮助程序的名称空间添加到视图文件夹中的Web.config文件中
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Namespace.Of.Your.Helper" />
</namespaces>
</pages>
</system.web.webPages.razor>
这将允许您的视图在不使用@using引用命名空间的情况下使用帮助程序。这是一个网站“项目”吗?如果是,请使用web应用程序项目尝试此操作。此项目是使用Visual Studio 2012中的ASP.NET Internet应用程序模板启动的。您可以将命名空间引用放在应用程序根目录的web.config中,或者(甚至更好)在~/Views/文件夹根目录下的Web.config中,与MVC引用的默认视图一起。配置将由任何子目录继承。确定。这正是我所想的!那么,你能解释一下我看到的行为吗?和我做的一样,只需创建一个文件夹,将下面的句子添加到视图文件夹中的web.config中,或者添加一个@using语句。你能共享项目文件夹,让我们看一看吗?