当mvc bootstrap tab-content中的选项卡处于活动状态时,动态加载内容

时间:2016-12-22 16:35:08

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

我正在使用bootstrap和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>

3 个答案:

答案 0 :(得分:2)

你需要在你的标签上放一个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.... 
      }
    });
});

答案 1 :(得分:0)

试用此代码

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

答案 2 :(得分:0)

Javascript Magic

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

TDLR;

在控制器中制作局部视图,并使用ajax加载它。