2015-07-20 126 views
5

爲什麼當我在C#語句中使用某些HTML時,Razor會抱怨無效的表達式和術語?如何在HTML語句中包含If語句

我該如何解決這個問題?

例如;在我的_layout.cshtml中:

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

作爲@RowanFreeman表明,逃避與HTML'@:'是圍繞這一方式。如果你能夠提供更多關於你在做什麼的背景(你的數據是什麼,你想要的標記結果是什麼),我敢打賭有人可以想出一個解決方案,不需要擔心這個問題。 – jdphenix

+0

另一種選擇是將end div連接到起始div,反之亦然。給出的代碼片段與我來自哪裏的反模式有點相似,因爲您在看似隨機的地方分割div。 – holroy

回答

8

Razor實際上試圖瞭解您的HTML。不幸的是,它不能具有高度的智能性,並且無法識別動態代碼或代碼。

由於

</div> 
<div> 

是無效的HTML,它抱怨。

您可以通過使用@:

這力量剃刀繞過其「HTML承認」避免這個問題,只需打印無論你怎麼問了。

E.g.

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

您還可以使用@Html.Raw("YOUR HTML");if語句中添加HTML代碼