在 MVC 中提交按钮时如何重定向到另一个 tabpanel 选项卡
How to redirect to another tabpanel tab when button is submited in a MVC
我正在处理 MVC 应用程序,在我的一个视图中有一个选项卡控件,它具有三个选项卡,在每个选项卡(第一个和第二个)上,用户必须填写一些可能在第三个选项卡上看到的数据,因此,例如,当用户在第一个选项卡上填写输入时,他将单击另一个选项卡,用户将在第二个选项卡上填写输入,当用户单击“保存更改”时,我想将更改保存到数据库(通过在控制器中调用我的方法)并将用户重定向到第三个选项卡
这是我的视图:
这是我的视图(上图)中的 html:
<div class="" role="tabpanel" data-example-id="togglable-tabs">
<ul id="myTab" class="nav nav-tabs bar_tabs" role="tablist">
<li role="presentation" class="active">
<a href="#tab_content1" id="home-tab" role="tab" data-toggle="tab" aria-expanded="true">TAB 1</a>
</li>
<li role="presentation" class="">
<a href="#tab_content2" role="tab" id="profile-tab" data-toggle="tab" aria-expanded="false">TAB 2</a>
</li>
<li role="presentation" class="">
<a href="#tab_content3" role="tab" id="profile-tab" data-toggle="tab" aria-expanded="false">TAB 3</a>
</li>
</ul>
<div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade active in" id="tab_content1" aria-labelledby="home-tab">
<div class="col-md-6 col-sm-6">
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="tab_content2" aria-labelledby="profile-tab">
<div class="table-responsive">
<table class="table table-striped jambo_table bulk_action">
<thead>
<tr class="headings">
<th class="column-title">Name </th>
<th class="column-title">Title </th>
</tr>
</thead>
<tbody>
</table>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="tab_content3" aria-labelledby="profile-tab">
<div class="row">
<div class="col-md-5 col-sm-12 col-xs-12">
</div>
<div class="col-md-7 col-sm-12 col-xs-12">
<div class="table-responsive">
<table class="table table-striped jambo_table bulk_action">
<thead>
<tr class="headings">
<th class="column-title">Name </th>
<th class="column-title">Title</th>
<th class="column-title">Value</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="form-group">
<div class="col-md-12">
<br />
<button type="submit" class="btn btn-warning pull-right" id="btnSaveThis"><i class="fa fa-save"></i> Save changes</button>
</div>
</div>
</div>
</div>
大家可以从代码中看到,这个视图中只有一个 "Save changes" 按钮,它正在向服务器提交数据并将其保存到数据库中,保存后我通常会重定向它到这样的索引页面:
return RedirectToAction("Index", "Articles");
但现在我想知道当用户位于 TAB 2 上并且按 "Save changes" 时如何将他重定向到 "TAB 3"。
接下来我要做的是,我实际上在我的按钮上附加了单击事件,该按钮正在向数据库提交更改,它看起来像这样:
$('#btnSaveThis').click(function (e) {
e.preventDefault();
$('#myTab a[href="#tab_content3"]').tab('show');
})
当我在第二个选项卡上时,上面的代码将打开第三个选项卡,如果我按“保存”更改,但是由于这一行,我位于控制器中的方法不会被命中:e.preventDefault();
伙计们,我怎样才能对我的控制器进行 POST,以保存对数据库的更改,同时执行我的 javascript 中的代码以打开第三个选项卡?
谢谢大家
干杯
用Ajax来解决这个问题太复杂了,因为要循环的项目很多,所以我决定用另一种方式解决这个问题。
接下来我在这里做的是:
- 在控制器中的方法上定义了 ViewBag,在第二个选项卡上提交表单时调用该方法
- 将那个 ViewBag 传递给这个视图,并检查 ViewBag 中是否有值,如果是,则将第三个选项卡设置为活动状态,很快我将 post 我的代码,因为我正在写这个立即通过我的手机 phone 回答! :)
但理论上我就是这样解决的
我正在处理 MVC 应用程序,在我的一个视图中有一个选项卡控件,它具有三个选项卡,在每个选项卡(第一个和第二个)上,用户必须填写一些可能在第三个选项卡上看到的数据,因此,例如,当用户在第一个选项卡上填写输入时,他将单击另一个选项卡,用户将在第二个选项卡上填写输入,当用户单击“保存更改”时,我想将更改保存到数据库(通过在控制器中调用我的方法)并将用户重定向到第三个选项卡
这是我的视图:
这是我的视图(上图)中的 html:
<div class="" role="tabpanel" data-example-id="togglable-tabs">
<ul id="myTab" class="nav nav-tabs bar_tabs" role="tablist">
<li role="presentation" class="active">
<a href="#tab_content1" id="home-tab" role="tab" data-toggle="tab" aria-expanded="true">TAB 1</a>
</li>
<li role="presentation" class="">
<a href="#tab_content2" role="tab" id="profile-tab" data-toggle="tab" aria-expanded="false">TAB 2</a>
</li>
<li role="presentation" class="">
<a href="#tab_content3" role="tab" id="profile-tab" data-toggle="tab" aria-expanded="false">TAB 3</a>
</li>
</ul>
<div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade active in" id="tab_content1" aria-labelledby="home-tab">
<div class="col-md-6 col-sm-6">
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
<div class="form-group">
//My inputs as text boxes
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="tab_content2" aria-labelledby="profile-tab">
<div class="table-responsive">
<table class="table table-striped jambo_table bulk_action">
<thead>
<tr class="headings">
<th class="column-title">Name </th>
<th class="column-title">Title </th>
</tr>
</thead>
<tbody>
</table>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="tab_content3" aria-labelledby="profile-tab">
<div class="row">
<div class="col-md-5 col-sm-12 col-xs-12">
</div>
<div class="col-md-7 col-sm-12 col-xs-12">
<div class="table-responsive">
<table class="table table-striped jambo_table bulk_action">
<thead>
<tr class="headings">
<th class="column-title">Name </th>
<th class="column-title">Title</th>
<th class="column-title">Value</th>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="form-group">
<div class="col-md-12">
<br />
<button type="submit" class="btn btn-warning pull-right" id="btnSaveThis"><i class="fa fa-save"></i> Save changes</button>
</div>
</div>
</div>
</div>
大家可以从代码中看到,这个视图中只有一个 "Save changes" 按钮,它正在向服务器提交数据并将其保存到数据库中,保存后我通常会重定向它到这样的索引页面:
return RedirectToAction("Index", "Articles");
但现在我想知道当用户位于 TAB 2 上并且按 "Save changes" 时如何将他重定向到 "TAB 3"。
接下来我要做的是,我实际上在我的按钮上附加了单击事件,该按钮正在向数据库提交更改,它看起来像这样:
$('#btnSaveThis').click(function (e) {
e.preventDefault();
$('#myTab a[href="#tab_content3"]').tab('show');
})
当我在第二个选项卡上时,上面的代码将打开第三个选项卡,如果我按“保存”更改,但是由于这一行,我位于控制器中的方法不会被命中:e.preventDefault();
伙计们,我怎样才能对我的控制器进行 POST,以保存对数据库的更改,同时执行我的 javascript 中的代码以打开第三个选项卡?
谢谢大家 干杯
用Ajax来解决这个问题太复杂了,因为要循环的项目很多,所以我决定用另一种方式解决这个问题。
接下来我在这里做的是:
- 在控制器中的方法上定义了 ViewBag,在第二个选项卡上提交表单时调用该方法
- 将那个 ViewBag 传递给这个视图,并检查 ViewBag 中是否有值,如果是,则将第三个选项卡设置为活动状态,很快我将 post 我的代码,因为我正在写这个立即通过我的手机 phone 回答! :)
但理论上我就是这样解决的