在一个视图中,为什么visual studio不知道模型指令后的半冒号会导致运行时错误?

时间:2011-09-28 18:56:20

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

我对MVC3非常陌生,在通过复数视频的asp.net mvc3教程后很快就遇到了问题。

尝试引入“添加模型”部分的强类型示例,这可以:

@model MvcApplication1.Models.RestaurantReview
@{
    ViewBag.Title = "Home Page 1";
}
... 

但是这不会......它构建,然后在运行时错误上窒息:

@model MvcApplication1.Models.RestaurantReview;
@{
    ViewBag.Title = "Home Page 1";
}
... 

唯一的区别是@model指令之后的半冒号,将其转换为语句而不是指令。

视觉工作室为什么不知道这会崩溃? IIS在崩溃期间出现的错误消息甚至不是错误实际位于代码中的正确行号。

VS确实以红色突出显示该行,告诉我只有这样的等等可以在语句中使用,但它不会阻止构建成功。

如果它没有立即被捕获,那么在一个大项目中进行调试似乎是一场噩梦,不是吗?

2 个答案:

答案 0 :(得分:3)

这显然是一个错误。我们知道它并将为下一版本的MVC修复它(实际上修复已经在MVC 4 Developer Preview中)。

答案 1 :(得分:2)

编译您对构建事件的视图,如果存在语法错误,它应该会阻止您的视图。

要编辑您的观点,请执行以下操作;

  1. 右键卸载您的项目 单击解决方案上的项目 VS中的资源管理器并单击卸载 项目
  2. 右键单击具有的项目 已转换为不可用 项目并单击“编辑” your_project_name.csproj“(那 将是vbproj我想如果你的 项目是VB项目)
  3. 请参阅以下代码;

      

    <!--There some lines of code here and I deleted them to get to the point quickly-->
    
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
    <MvcBuildViews>false</MvcBuildViews>
    

  4. MvcBuildViews 节点值从false更改为true

  5. 完成此操作后,保存并重新加载 项目

  6. 然后,构建您的解决方案以进行编译。您将看到您的视图也将被编译。

    <强>更新

    试过你的例子,它按照假设窒息。所以它有Works on My Machine批准印章

    enter image description here

    <强>更新

    我写了一篇关于这个主题的快速博客文章。查看详细信息:

    http://www.tugberkugurlu.com/archive/how-to-detect-errors-of-our-asp-net-mvc-views-on-compile-time-blow-up-in-my-face-theory