我在我的MVC3应用程序中创建了一个自定义视图引擎,允许嵌套区域,如此
~/areas/admin /marketing /views index /controllers marketingController /email /views index ... /controllers emailController /templates /views index edit ... /controllers templatesControler
等等
这一切都很有效,除了我似乎在不在标准〜/ areas / area_name / views / myview.cshtml位置的视图中丢失了智能感知.
有什么建议?
更新
只是在百灵鸟上,我添加了@inherits声明
@inherits System.Web.Mvc.WebViewPage<Namespace.Models.Class>
和intellisense开始工作.然后我删除了该声明,并继续工作.
项目文件中是否有一些设置或告诉Visual Studio应用于打开文件的哪种智能感知,而不是文件扩展名? (如果扩展是所有使用的,我希望它更加一致).
更新2
虽然在每个视图文件夹中添加web.config可以很好地解决问题,但是将razor配置放在root web.config中却没有.
将所需的system.web.webPages.razor部分添加到〜/ web.config后,
>我将Razor .cshtml视图文件添加到我的一个嵌套视图文件夹中.
>智能感知工作.
>我重命名文件(保留.cshtml扩展名)
> Intellesense和语法突出显示停止工作.
>我关闭重命名的文件并重新打开它 – 一切都开始工作了.
>或者,我没有关闭并重新打开文件,而是将其重命名为原始名称,然后重新开始工作.
这感觉就像一个VS错误 – 重命名一个文件(但保留适当的扩展名)不应该,据我所知,导致这种行为.我将继续在我的每个视图文件夹中放置单独的web.configs,因为它可以解决问题,但是当我希望这些设置像其他web.config设置一样通过解决方案树传播时,必须弄乱解决方案.做.
值得注意的是,无论Razor配置位于何处,无论intellesense是否正常工作,网站都能继续正常运行.
解决了
我被Powers认为(非常快),这是一个已知的问题,在MVC3 RTM和VS2010 SP1中得到纠正.更新我的MVC3安装并添加SP1后问题消失了.
解决方法
不同文件夹中的Razor视图不会继承此配置.
您需要将此配置添加到文件夹中的Web.config:
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory,System.Web.Mvc,Version=3.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" /> </namespaces> </pages> </system.web.webPages.razor>