如何在if语句中嵌入HTML

6

为什么当我在C#语句中使用特定的HTML时,Razor会抱怨无效的表达式和术语?

我该如何解决这个问题?

例如,在我的_layout.cshtml中:

@if (Team.Id == ViewBag.TeamId)
{
    </div>
    <div class="row">
    &nbsp;
}

正如@RowanFreeman所指出的那样,使用@:转义HTML是解决此问题的一种方法。如果您能够提供有关您正在做什么(您的数据是什么,您想要的标记结果是什么)的更多上下文信息,我敢打赌,有人可以提出一个不涉及担心这个问题的解决方案。 - jdphenix
另一个选择是将结束的div连接到起始的div,反之亦然。从我的角度来看,给出的代码摘录有点反模式,因为您正在在似乎随机的位置拆分一个div。 - holroy
2个回答

13

Razor实际上会尝试理解你的HTML。不幸的是,它不能高度智能化地识别动态代码或表达式之外的代码。

由于

</div>
<div>

是无效的HTML,它会报错。

您可以通过使用@:来避免这个问题。

这将强制Razor绕过其“HTML识别”,并简单地打印您所要求的内容。

例如:

@if (Team.Id == ViewBag.TeamId)
{
    @:</div>
    @:<div class="row">
    @:&nbsp;
}

0

您还可以在if语句中使用@Html.Raw("YOUR HTML");来添加HTML代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接