我的视图中有一个if/else
块,根据一些ViewBag
数据显示一些html,但似乎我在剃刀语法中有错误(我是razor的新手),我得到了以下信息:
分析程序错误消息:if块缺少结束“}”字符。确保此块中的所有“{”字符都有匹配的“}”字符,并且没有任何“}”字符被解释为标记。
相关代码:
@if (ViewBag.Sidebar == "Yes")
{
<div class="col-xs-12 col-md-3">
@Html.Action("SidebarPartial", "Pages")
</div>
<div class="col-xs-12 col-md-8">
}
else
{
<div class="col-xs-12 col-md-12">
}
@RenderBody()
</div>
答案 0 :(得分:4)
你可以这样做
@if (ViewBag.Sidebar == "Yes")
{
<div class="col-xs-12 col-md-3">
@Html.Action("SidebarPartial", "Pages")
</div>
@Html.Raw("<div class='col-xs-12 col-md-8'>")
}
else
{
@Html.Raw("<div class='col-xs-12 col-md-12'>")
}
@RenderBody()
</div>
答案 1 :(得分:2)
这不是剃刀的错误。不适当的关闭div混淆剃刀。
你应该在一个if块中打开和关闭你的div。这是一个解决方案,除此之外你还可以使用这样的类。
@if (ViewBag.Sidebar == "Yes")
{
@:<div class="col-xs-12 col-md-3">
@Html.Action("SidebarPartial", "Pages")
</div>
@:<div class="col-xs-12 col-md-8">
}
else
{
@:<div class="col-xs-12 col-md-12">
}
@RenderBody()
</div>
希望这有帮助!
答案 2 :(得分:1)
您可以将该类存储在字符串中:
@{
string cls = "col-md-12";
if (ViewBag.Sidebar == "Yes") { cls = "col-md-8"; }
}
@if (ViewBag.Sidebar == "Yes")
{
<div class="col-xs-12 col-md-3">
@Html.Action("SidebarPartial", "Pages")
</div>
}
<div class="col-xs-12 @cls">
@RenderBody()
</div>