【问题标题】:razor syntax with errors compiles when it should not compile带有错误的剃刀语法在不应该编译时编译
【发布时间】:2011-02-16 08:50:54
【问题描述】:

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

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

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

它在运行时失败:

这种事情经常发生,不仅仅是未定义的方法,甚至是变量等。

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 compiler-errors razor t4mvc


【解决方案1】:

这是设计使然。默认情况下禁用 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">
    @ 987654325@
    <MvcBuildViews>true</MvcBuildViews>
    ...

  • 重新加载项目

下次编译时,如果 MVC 视图中有错误,它将无法编译。 缺点是编译过程会比较长。

更新

这是关于 SO 的answer,解释了如何避免错误:

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

【讨论】:

  • +1 耶!惊人的!我知道某处有一个未知功能,我刚刚发现了另外 2 个错误,这些错误以后会咬我!
  • +1,但是当添加这个时它开始抱怨这个:It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS
  • @Filip 是的我也明白了...尝试清理解决方案并再次构建,这甚至可能意味着您的观点也像我一样有错误!
  • @Filip Ekberg @giddy 我用一个 SO 答案的链接更新了我的答案,解释了如何避免这个错误。
  • 起初我觉得这就是我所需要的。但是后来我从(我认为)编译的视图中得到了很多错误,这些视图甚至不应该存在了。
猜你喜欢
  • 2015-04-01
  • 2018-12-14
  • 2013-04-09
  • 2021-07-27
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多