我在剃刀代码中看到一个非常奇怪的错误,请参阅以下代码:
<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() ))
答案 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>