【问题标题】:dynamically load content when tab is active in mvc bootstrap tab-contentdynamically load content when tab is active in mvc bootstrap tab-content
【发布时间】:2017-05-08 08:29:22
【问题描述】:

我正在使用引导程序和 ASP.NET mvc 创建 Web 应用程序。我在每个选项卡上使用部分视图,但是现在所有数据都同时进入。我想仅在选项卡处于活动状态时才调用我的部分来查询和返回数据。我该怎么做?

<div>
    <ul class="nav nav-tabs nav-justified">
        <li class="active"><a href="#tab1" data-toggle="tab">Service</a></li>
        <li><a href="#tab2" data-toggle="tab">Instrument</a></li>
    </ul>

    <div class="tab-content">

        <div class="tab-pane fade in active" id="tab1">
            @Html.Action("Index", "Controller1")

        </div>
        <div class="tab-pane fade" id="tab2">
            @Html.Action("Index", "Controller2")
        </div>

    </div>
</div>

【问题讨论】:

    标签: javascript asp.net-mvc twitter-bootstrap asp.net-mvc-4


    【解决方案1】:

    你需要在你的标签上放置一个 onClick 事件,像下面这样的东西应该适合你

    <ul class="nav nav-tabs nav-justified">
       <li class="active" data-ref="1"><a href="#tab1" data-toggle="tab">Service</a></li>
       <li data-ref="2"><a href="#tab2" data-toggle="tab">Instrument</a></li>
    </ul>
    
    
    <div class="tab-content">
        <div class="tab-pane fade in active" id="tab1">
            <div id="tabone"></div>
        </div>
    
    $(".nav-tabs li").click(function(){
      var pageId = $(this).data('ref');
       $.ajax({
          url: url,
          data: {pageId:pageId },
          success: function(response){
            if(pageId == 1)
            {
               $('#tab1').replaceWith(response);
            }
            else.... 
          }
        });
    });
    

    【讨论】:

      【解决方案2】:

      试试这个代码

      <div>
          <ul class="nav nav-tabs nav-justified">
              <li class="active"><a href="#tab1" id="openTab1" data-toggle="tab">Service</a></li>
              <li><a href="#tab2" id="openTab2" data-toggle="tab">Instrument</a></li>
          </ul>
      
          <div class="tab-content">
      
              <div class="tab-pane fade in active" id="tab1">
                  @Html.Action("Index", "Controller1")
      
              </div>
              <div class="tab-pane fade" id="tab2">
                  @Html.Action("Index", "Controller2")
              </div>
      
          </div>
      </div>
      
      <script>
          $("#openTab1").on("click", function() {
              $("#tab1").load('/Controller1/Index');
          });
      
          $("#openTab2").on("click", function() {
              $("#tab2").load('/Controller2/Index');
          });
      </script>
      

      【讨论】:

        【解决方案3】:

        Javascript 魔法

        ASP.net 本身并没有提供该功能。我将使用的方法是在您的controller 中设置一个 url,返回一个partial view,然后对该 url 发出 ajax 请求以将其内容加载到您的网页中。我描述的方法可以看成例子Here

        tdlr;

        在你的控制器中创建一个局部视图,并使用 ajax 加载它。

        【讨论】:

          猜你喜欢
          • 2020-11-11
          • 1970-01-01
          • 2012-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-12-02
          • 2016-11-15
          相关资源
          最近更新 更多