我正在尝试使用Razor模板:
@if(isNew)
{
<div class="new">
}
...
@if(isNew)
{
</div>
}
错误是:
cannot resolve the symbol 'div'
Razor不喜欢IF子句中的结尾div标签,我怎样才能使它工作?我必须使用逃脱吗?
答案 0 :(得分:37)
当您将开始/结束标记分割为这样时,Razor不喜欢它,因为它无法正确解析HTML,因此您必须将它们作为纯文本转义:
@if(isNew)
{
@:<div class="new">
}
...
@if(isNew)
{
@:</div>
}
更传统的方法是重复div中的标记(使用partials或其他方式) - 我认为哪种方法更可取,取决于条件div之间标记的性质:
@if(isNew)
{
<div class="new">
<!-- some markup or partial view -->
</div>
}
else
{
<!-- some markup or partial view -->
}
如果有的话,我更喜欢这种方法:
我还应该添加使用辅助方法的选项:
@helper MainMarkup()
{
<!-- some markup or partial view -->
}
@if(isNew)
{
<div class="new">
@MainMarkup()
</div>
}
else
{
@MainMarkup()
}
如果您想使用上面的第二个选项但是避免重复标记或嵌套过多的部分(特别是如果此标记仅与此视图相关),这将非常有用。