我正在尝试使用 Razor 模板来执行此操作:
@if(isNew)
{
<div class="new">
}
...
@if(isNew)
{
</div>
}
错误是:
cannot resolve the symbol 'div'
Razor 不喜欢 IF 子句中的结束 div 标记,我怎样才能让它工作?我必须使用转义吗?
最佳答案
Razor 不喜欢像这样拆分开始/结束标记,因为它无法正确解析 HTML,因此您必须将它们转义为纯文本:
@if(isNew)
{
@:<div class="new">
}
...
@if(isNew)
{
@:</div>
}
更传统的方法是在 div 中重复标记(使用部分或其他方式)——哪种方法更可取,我想说,取决于条件 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()
}
如果您想使用上面的第二个选项但要避免重复标记或嵌套太多部分(特别是如果此标记仅与此 View 相关时),这将很有用。
关于c# - 当我在 if 子句中放置一个关闭的 div 标签时,Razor 会提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338335/