带错误的剃刀语法在不应编译时编译

gid*_*eon 19 asp.net-mvc compiler-errors t4mvc razor asp.net-mvc-3

所以我在运行时使用我的asp.net mvc3应用程序进入错误,当我检查代码时,我看到它上面有一个红线,错误列表没有定义这样的函数,它仍然可以正常编译.错误仅在运行时出现?我正在使用T4MVC,我希望它可以帮助我避免这样的问题!?

这是设计还是我在这里做错了什么?

在此输入图像描述

上面的代码不应该编译,因为那里没有这样的方法!

它在运行时失败:

在此输入图像描述

这种事情发生了很多,不仅仅是未定义的方法,甚至是变量等.

Mar*_*erl 33

这是设计的.默认情况下禁用MVC视图的构建.您可以在Visual Studio中启用MVC视图的构建,如下所示:

  • 在Visual Studio中右键单击您的项目
  • 卸载项目
  • 编辑项目

  • 将值MvcBuildViews从false 更改为true

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    ...
    <MvcBuildViews>true</MvcBuildViews>
    ...

  • 重新加载项目

下次编译并且MVC视图中存在错误时,它将无法编译.缺点是,编译过程需要更长时间.

更新

这是SO 的答案,解释了如何避免错误:

在应用程序级别之外使用注册为allowDefinition ='MachineToApplication'的部分是错误的.此错误可能是由于未在IIS中将虚拟目录配置为应用程序引起的

  • +1,然而当添加它时,它开始抱怨这样:`使用注册为allowDefinition ='MachineToApplication'的部分超出应用程序级别是错误的.此错误可能是由于未在IIS`中将虚拟目录配置为应用程序引起的 (2认同)