【发布时间】:2011-02-06 01:00:13
【问题描述】:
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 扩展名)
- 智能感知和语法高亮停止工作。
- 我关闭重命名的文件并重新打开它 - 一切又开始工作了。
- 或者,我没有关闭并重新打开文件,而是将其重命名回原来的名称,它又开始工作了。
这感觉就像一个 VS 错误——据我所知,重命名文件(但保留正确的扩展名)不应该导致这种行为。我将继续将个人 web.configs 放在我的每个视图文件夹中,因为它可以解决问题,但是当我希望这些设置像其他 web.config 一样通过解决方案树传播时,不得不弄乱解决方案是很烦人的设置。
还值得注意的是,无论 Razor 配置位于何处,无论智能感知是否正常工作,该站点都会继续正常运行。
已解决
Powers That Be 通知我(非常快)这是一个已知问题,已在 MVC3 RTM 和 VS2010 SP1 中得到纠正。更新我的 MVC3 安装并添加 SP1 后问题消失了。
【问题讨论】:
-
你是对的;这听起来像一个VS错误。电子邮件 ScottGu@Microsoft.com。
-
会的。终于有理由去看甲骨文了。
标签: asp.net-mvc-3 razor directory viewengine