ASP.NET MVC 3.0 - 为什么在视图中强类型模型,如果没有发生静态编译?

Bor*_* B. 6 strong-typing type-safety strongly-typed-view asp.net-mvc-3

我正在积极开发桌面应用程序,本地和网络服务,一些经典的ASP.NET等,所以我习惯于静态编译和静态代码分析.现在我(最终)学习ASP.NET MVC 3.0我发现许多ASP.NET MVC专家和经验丰富的开发人员都建议在ASP.NET MVC 3.0中使用强类型视图(如果适用).

我猜测"强类型"意味着写@model=...在视图代码的顶部.但在这样做时,我只能使IntelliSense工作,没有进行静态代码检查.我可以@modelcshtml的语句中编写我想要的任何内容,它将编译并运行.因此,Model.Anything也编译.事实上,如果我输入@model,我可以动态地使用我想要的具有"兼容"属性和方法的任何模型.

我已经习惯了"强类型",意思是"不会编译",像LINQ到什么,如果你没有得到正确的属性就不会编译.@model除了IntelliSense和运行时错误之外还有其他任何目的,为什么它被称为强类型,如果它实际上不是?

强大的打字,计算机文学中的意义

Rob*_*aap 3

默认情况下,视图在运行时编译。您可以通过设置以下属性来修改项目文件 (csproj) 以在构建应用程序时编译视图:

<MvcBuildViews>true</MvcBuildViews>
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是您的构建时间将显着增加。您应该考虑仅针对发布版本将此选项设置为 true。

您可以通过卸载项目来编辑项目文件,右键单击项目并选择编辑项目文件