VS2010 Ultimate,带有 Razor 的 ASP.NET MVC 3。
我在我的 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>
智能感知开始工作。然后我删除了该声明,它继续工作。
项目文件中是否有一些设置或告诉 Visual Studio 什么样的智能感知应用于打开的文件,而不是文件扩展名?(如果仅使用扩展名,我希望它会更加一致)。
更新 2
虽然向我的每个视图文件夹添加 web.config 可以很好地解决问题,但将 razor 配置放在根 web.config 中却没有。
将所需system.web.webPages.razor
部分添加到后~/web.config
,
- 我将 Razor .cshtml 视图文件添加到我的嵌套视图文件夹之一。
- 智能感知有效。
- 我重命名文件(保留 .cshtml 扩展名)
- Intellesense 和语法高亮停止工作。
- 我关闭重命名的文件并重新打开它——一切又开始工作了。
- 或者,我没有关闭并重新打开文件,而是将其重命名为原来的名称,它再次开始工作。
这感觉就像一个 VS 错误 - 据我所知,重命名文件(但保留正确的扩展名)不应该导致这种行为。我将继续web.config
在我的每个视图文件夹中放置单独的 s,因为它可以解决问题,但是当我希望这些设置像其他 web.config 设置一样通过解决方案树传播时,不得不弄乱解决方案是很烦人的。
还值得注意的是,无论 Razor 配置位于何处,无论智能感知是否正常工作,该站点都会继续正常运行。
解决了
Powers That Be 告诉我(难以置信地迅速)这是一个已知问题,已在 MVC3 RTM 和 VS2010 SP1 中得到纠正。更新我的 MVC3 安装并添加 SP1 后问题消失了。