【问题标题】: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 加载它。