c# – 当我在if子句中放置一个关闭div标签时,Razor抱怨

前端之家收集整理的这篇文章主要介绍了c# – 当我在if子句中放置一个关闭div标签时,Razor抱怨前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Razor模板:
@if(isNew)
{
   <div class="new">
}

...


@if(isNew)
{
   </div>
}

错误是:

cannot resolve the symbol 'div'

Razor不喜欢IF子句中的结尾div标签,我该如何让它工作?有没有逃脱我不得不使用?

解决方法

当您拆分开始/结束标签时,剃须刀不喜欢它,因为它无法正确解析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()
}

如果要使用上述第二个选项,但避免重复标记或嵌套太多部分(特别是如果此标记仅与此视图相关),则此功能非常有用.

猜你在找的C#相关文章