在视图文件夹外放置cshtml时无可用扩展

时间:2015-09-25 08:07:49

标签: asp.net-mvc asp.net-mvc-4 razor

我是Asp.Net MVC的新手,当我在Views文件夹外放置一个视图时,我遇到了问题。在我的情况下,我真的不需要它们在Views文件夹中,因为我正在使用sitecore,它有自己的mvc引擎,只需要一个cshtml文件的路径。

但是,如果我将它放在Views文件夹中,我有扩展方法可用:

enter image description here

如果我在其他地方创建了相同的文件,我错过了扩展名:

enter image description here

我缺少什么,也许有人可以简要解释在这种情况下观点文件夹背后的魔力。

由于

1 个答案:

答案 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,以便获得智能感知。