视图中的if else和markup的错误

时间:2016-11-03 17:00:34

标签: c# asp.net-mvc razor

我的视图中有一个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>

3 个答案:

答案 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>