【发布时间】:2018-04-08 06:15:45
【问题描述】:
我有一个视图,其中包含一组选项卡,每个选项卡都呈现不同的局部视图。在阅读了这些引导选项卡的文档和 W3Schools 示例后,我无法找到一种方法使活动选项卡在回发时保持活动状态。我看到的所有示例都使用旧版本的 .Net,也不适用。
这是我的代码。
我的控制器操作:
public IActionResult DisplayCharts(DashboardChartsByMonthModel model)
{
//...do stuff
model.MonthOrQuarterChart = monthChart;
model.UserChart = userChart;
return View(model);
}
在视图@Scripts 部分内:
<script>
$(function(){
var hash = window.location.hash;
hash && $('ul.nav a[href="' + hash + '"]').tab('show');
$('.nav-tabs a').click(function (e) {
$(this).tab('show');
var scrollmem = $('body').scrollTop() || $('html').scrollTop();
window.location.hash = this.hash;
$('html,body').scrollTop(scrollmem);
});
});
</script>
<script>
$('a[data-toggle="tab"]').on('shown.bs.tab',
function(e) {
switch ($(e.target).attr('href')) {
case '#tab1':
drawMonthAndQuarterChart();
break;
case '#tab2':
drawUserChart();
break;
}
});
</script>
在体内:
<ul class="nav nav-tabs" role="tablist" id="myTabs">
<li class="nav-item">
<a class="nav-link active" id="tab1-tab" data-toggle="tab" href="#tab1" role="tab" aria-controls="tab1" aria-selected="true">By Month & Quarter</a>
</li>
<li class="nav-item">
<a class="nav-link" id="tab2-tab" data-toggle="tab" href="#tab2" role="tab" aria-controls="tab2" aria-selected="false">By Leasing / Billing Rep</a>
</li>
<div class="tab-content" id="myTabContent">
<div class="tab-pane active" id="tab1" role="tabpanel" aria-labelledby="tab1-tab">
<form method="post">
...model fields, etc.
<button type="submit" class="btn btn-success">Submit</button>
<div id="chart_monthandquarter_div"></div>
</form>
<div class="tab-pane" id="tab2" role="tabpanel" aria-labelledby="tab2-tab">
<form method="post">
....
</form>
选项卡 2、选项卡 3 等也是如此。每个选项卡都有自己的表单和提交模型的按钮,当页面在提交后重新加载时,我可以在两个选项卡之间切换并查看我的图表渲染得很好,但是在我发布任何时候它都会使第一个选项卡保持活动状态。
我尝试过的几件事之一是制作一些带有隐藏字段的旧示例,我见过一些人使用但我无法让它工作。
那么,有了所提供的代码,我怎样才能使您在单击提交时查看的当前选项卡成为回发时处于活动状态的选项卡?
【问题讨论】:
-
您从表单提交的 HttpPost 操作方法返回什么?
-
@Shyju
return View(model);只需根据我的选择列表值使用更新的模型刷新页面。 -
您可能需要考虑使用像 VueJS 这样的 Javascript 框架。他们使这类问题变得微不足道。
-
@MattLaCrosse 添加这样的东西的开销是多少?是否像包含 Nuget 包和使用脚本或其他东西一样简单?如果可以,您能否提供更多信息或示例?
-
@Mkalafut 如果您使用的是 NodeJS,它通常就像在构建设置中包含正确的库/配置一样简单。然后根据需要使用框架。例如,我的 ASP.NET Core Webapp 使用 Aurelia 作为带有 Webpack 的前端 UI。 .NET 用于 API 后端。
标签: javascript c# jquery twitter-bootstrap asp.net-core