Razor + Javascript奇怪的错误

时间:2014-02-14 21:02:40

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

我在剃刀代码中看到一个非常奇怪的错误,请参阅以下代码:

<script type="text/javascript">
@if (Model.SomeVerification)
{
   <text>
   if (startHour.getTime() >= maxStartHour.getTime() || startHour.getTime() < maxStartHour.getTime()) {
      if (!(checkIN.valueOf() <= currentNow.setDate(now.getDate() + 1).valueOf())) {
      //The code goes on...
      }
   }
  </text>
}
</script>

代码语法很完美但是当我尝试运行它时,我有以下错误:

  

消息解析器错误:已到达文件结尾或意外字符   之前可以分析“”标记。标记块内的元素   应该是完整的。他们必须自我关闭(“
”)或拥有   相应的结束标签(“

Hello”)。如果你想显示一个   “&LT;”字符,使用“&lt;” HTML实体。

问题是“&lt;”在“&lt; =”,但我不明白为什么因为我有其他块“&lt;”单独,没有“=”。有没有人以前见过这个并用比我更好的解决方案解决了它?我刚刚解决了改变if位置的问题:

if (!(currentNow.setDate(now.getDate() + 1).valueOf() >= checkIN.valueOf() ))  

2 个答案:

答案 0 :(得分:2)

如果尝试将脚本标签放在剃须刀中而不是使用文本标签,该怎么办?

示例:

@if (Model.SomeVerification)
{
    <script type="text/javascript">
       if (startHour.getTime() >= maxStartHour.getTime() || startHour.getTime() < maxStartHour.getTime()) {
          if (!(checkIN.valueOf() <= currentNow.setDate(now.getDate() + 1).valueOf())) {
          //The code goes on...
          }
       }
    </script>
}

答案 1 :(得分:0)

您需要使用 @:语法告诉Razor将每个if语句解析为文本。 如果你只有一个if语句,那么text标签就可以工作,但由于你有两个if语句嵌套,所以最好使用@:syntax。

<script type="text/javascript">
@if (Model.SomeVerification)
{

   @:if (startHour.getTime() >= maxStartHour.getTime() || startHour.getTime() < maxStartHour.getTime()) {
      @:if (!(checkIN.valueOf() <= currentNow.setDate(now.getDate() + 1).valueOf())) {
      //The code goes on...
      }
   }

}
</script>