视图中if else和标记的错误

本文关键字:错误 if else 视图 | 更新日期: 2023-09-27 18:16:15

我有一个if/else块在我的视图中显示一些基于一些ViewBag数据的html,但似乎我在剃刀语法中有错误(我是剃刀的新手),我得到以下消息:

解析器错误消息: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>

视图中if else和标记的错误

你可以这样做

@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>

这不是剃须刀的bug。不正确关闭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>

希望这对你有帮助!

可以将类存储在字符串中:

@{
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>