我是Asp.Net MVC的新手,当我在Views文件夹外放置一个视图时,我遇到了问题。在我的情况下,我真的不需要它们在Views文件夹中,因为我正在使用sitecore,它有自己的mvc引擎,只需要一个cshtml文件的路径。
但是,如果我将它放在Views文件夹中,我有扩展方法可用:
如果我在其他地方创建了相同的文件,我错过了扩展名:
我缺少什么,也许有人可以简要解释在这种情况下观点文件夹背后的魔力。
由于
答案 0 :(得分:2)
这些扩展方法来自System.Web.Mvc.Html
命名空间。
当视图放在views文件夹中时,它会从/Views/Web.config
文件中获取一些默认选项(包括基本类型,主机工厂,命名空间等)。
这是views文件夹中的Web.config示例:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.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.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
如果Razor视图放在不同的文件夹中,它将无法获得此配置,您需要在该文件夹中添加Web.config
,以便获得智能感知。