【问题标题】:Bootstrap tabs not working for a view with two partial views引导选项卡不适用于具有两个部分视图的视图
【发布时间】:2017-05-18 07:38:14
【问题描述】:

我有一个有两个选项卡的主视图。第一个选项卡是默认选项卡,应显示第一个局部视图,第二个选项卡应显示第二个局部视图。虽然我让它正常工作,但我无法突出显示特定选定选项卡的选项卡。

我的控制器。

public ActionResult Contact(int condition=0)
    {

        if(condition==0)
            ViewBag.Message = "Tab1";
        else
            ViewBag.Message = "Tab2";

        ViewBag.Condition = condition;
        return View();
    }

我的观点

@{
ViewBag.Title = "Contact";
}
<h2>@ViewBag.Title.</h2>


<div>
<ul class="nav nav-tabs">
    <li>@Html.ActionLink("Tab1","Contact", new { condition=0})</li>
    <li>@Html.ActionLink("Tab2", "Contact", new { condition = 1 })</li>
</ul>
<div class="tab-content">
    @if (ViewBag.Condition == 0)
    {
    <div class="tab-pane active" id="Tab1">
        @Html.Partial("_Partial1")
    </div>
    }
    else
    {
    <div class="tab-pane active" id="Tab2">
        @Html.Partial("_Partial2")
    </div>
    }
</div>

</div>

编辑 1:正如答案所建议的那样,并不能解决问题。

@{
ViewBag.Title = "Contact";
}
<h2>@ViewBag.Title.</h2>


<div>
<ul class="nav nav-tabs">
    <li>@Html.ActionLink("Tab1","Contact", new { condition=0}, new { @class = ViewBag.Condition == 0 ? "active" : "" })</li>
    <li>@Html.ActionLink("Tab2", "Contact", new { condition = 1 }, new { @class = ViewBag.Condition == 1 ? "active" : "" })</li>
</ul>
<div class="tab-content">
    @if (ViewBag.Condition == 0)
    {
    <div class="tab-pane active" id="Tab1">
        @Html.Partial("_Partial1")
    </div>
    }
    else
    {
    <div class="tab-pane active" id="Tab2">
        @Html.Partial("_Partial2")
    </div>
    }
</div>

</div>

编辑 2:

   <div id="tabs">
   <ul class="nav nav-tabs">

        <li class="nav active">@Html.ActionLink("Tab1", "Contact", new { condition = 0 }, new { @id = "Tab1", data_toggle = "tab" })</li>
        <li class="nav">@Html.ActionLink("Tab2", "Contact", new { condition = 1 }, new { @id = "Tab2", data_toggle = "tab" })</li>

</ul>
<div class="tab-content">

    <div class="tab-pane fade in active" id="Tab1">
        @Html.Partial("_Partial1")
    </div>

    <div class="tab-pane fade" id="Tab2">
        @Html.Partial("_Partial2")
    </div>

</div>

</div>

我已将代码更改为基于this fiddle 差别不大。

【问题讨论】:

    标签: asp.net-mvc twitter-bootstrap tabs asp.net-mvc-partialview


    【解决方案1】:

    我确信有更好的方法可以做到这一点,但这个解决方案对我有用。我只是每次都检查 Viewbag 并根据检查设置 li 活动的类。这样,即使屏幕在选项卡更改时调用了 action 方法,我最终也会设置正确的 li 元素。

    <div>
    <ul class="nav nav-tabs">
        @if (ViewBag.Condition == 0)
        {
            <li class="nav active">@Html.ActionLink("Tab1", "Contact", new { condition = 0 }, new { @id = "Tab1" })</li>
            <li class="nav">
                @Html.ActionLink("Tab2", "Contact", new { condition = 1 }, new{@id = "Tab2"})
            </li>
        }
        else if (ViewBag.Condition == 1)
        {
            <li class="nav">@Html.ActionLink("Tab1", "Contact", new { condition = 0 }, new { @id = "Tab1"})</li>
            <li class="nav active">@Html.ActionLink("Tab2", "Contact", new { condition = 1 }, new { @id = "Tab2"})</li>
        }
    </ul>
    <div class="tab-content">
        @if (ViewBag.Condition == 0)
        {
            <div class="tab-pane fade in active" id="Tab1">
                @Html.Partial("_Partial1")
            </div>
        }
        else if (ViewBag.Condition == 1)
        {
            <div class="tab-pane fade  in active" id="Tab2">
                @Html.Partial("_Partial2")
            </div>
        }
    </div>
    

    【讨论】:

      【解决方案2】:
      <div>
          <ul class="nav nav-tabs">
              <li>@Html.ActionLink("Tab1", "Contactme", new { condition = 0 })</li>
              <li>@Html.ActionLink("Tab2", "Contactme", new { condition = 1 })</li>
          </ul>
          <div class="tab-content">
              @if (ViewBag.Condition == 0)
              {
                  <div class="tab-pane active" id="Tab1">
                     @Html.Partial("_Partial1")
                  </div>
              }
              else
              {
                  <div class="tab-pane active" id="Tab2">
                      @Html.Partial("_Partial2")
                  </div>
              }
          </div>
          </div>
      

      【讨论】:

      • 很抱歉,我找不到我的代码和你的代码之间的区别。你能指出你纠正了什么吗?
      • 你忘记在结尾“
        ”处关闭结束 div
    • 感谢您指出这一点,但您可以编辑问题而不是将其作为答案发布,因为我认为您没有添加任何实质性内容来将其视为答案。
    • 你是对的,但我的声誉低于 50 我一开始无法评论
    • 猜你喜欢
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多