我非常喜欢 Razor 语法,但它确实不够完美。例如,我有以下标记 block 。
@if (Model.FeaturedDestinations != null && Model.FeaturedDestinations.Count() > 0)
{
int column = 0;
foreach (var d in Model.FeaturedDestinations)
{
column++;
if (column > 4)
{
</div>
@{ column = 1; }
}
if (column == 1)
{
@:<div class="row-fluid">
}
<div class="span3">
@RenderDestination(d)
</div>
}
</div>
}
所以,编辑器给了我波浪线,表明我有一个结局 <div>
标签位于开头标签之前。我可以忍受这一点。但是当我运行该应用程序时,我实际上收到以下运行时错误:
Encountered end tag "div" with no matching start tag. Are your start/end tags properly balanced?
显然,我无法忍受这一点!那么处理这种情况有什么技巧吗?就我想要的标记而言,我知道我在做什么。但 Razor 不这么认为,它正在接管。
为什么 MVC 会浪费周期检查平衡标签?
最佳答案
由于我不明白的原因,以下更正了该问题:
@if (Model.FeaturedDestinations != null && Model.FeaturedDestinations.Count() > 0)
{
int column = 0;
foreach (var d in Model.FeaturedDestinations)
{
column++;
if (column > 4)
{
@:</div>
column = 1;
}
if (column == 1)
{
@:<div class="row-fluid">
}
<div class="span3">
@RenderDestination(d)
</div>
}
@:</div>
}
请注意在几个标记之前添加@:
。我不知道为什么这些是必要的 - Razor 突出显示表明它识别出这些是标签而不是代码。
另外,为什么这会使错误消失?导致运行时错误的事情没有改变。也许有人可以帮我填补这个空白。
关于ASP.NET MVC Razor 不接受我的有效标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10610344/