loy*_*low 15 c# asp.net-mvc razor
我试图使用Razor模板来做到这一点:
@if(isNew)
{
<div class="new">
}
...
@if(isNew)
{
</div>
}
Run Code Online (Sandbox Code Playgroud)
错误是:
cannot resolve the symbol 'div'
Run Code Online (Sandbox Code Playgroud)
Razor不喜欢IF子句中的结束div标签,我怎么能让它工作?我必须使用逃脱吗?
Ant*_*t P 40
当您将开始/结束标记分割为这样时,Razor不喜欢它,因为它无法正确解析HTML,因此您必须将它们作为纯文本转义:
@if(isNew)
{
@:<div class="new">
}
...
@if(isNew)
{
@:</div>
}
Run Code Online (Sandbox Code Playgroud)
更传统的方法是重复div中的标记(使用partials或其他方式) - 我想说,哪种方法更可取,取决于条件div之间标记的性质:
@if(isNew)
{
<div class="new">
<!-- some markup or partial view -->
</div>
}
else
{
<!-- some markup or partial view -->
}
Run Code Online (Sandbox Code Playgroud)
如果有的话,我更喜欢这种方法:
我还应该添加使用辅助方法的选项:
@helper MainMarkup()
{
<!-- some markup or partial view -->
}
@if(isNew)
{
<div class="new">
@MainMarkup()
</div>
}
else
{
@MainMarkup()
}
Run Code Online (Sandbox Code Playgroud)
如果要使用上面的第二个选项但是避免重复标记或嵌套太多的部分(特别是如果此标记仅与此视图相关),这将非常有用.