如何在 mvc razor 视图中跨选项卡传递 id
how to pass id across tabs in mvc razor view
我有一个带有多个 bootstrap 选项卡的 mvc 视图。一旦我在第一个选项卡中单击保存,将在数据库中生成一个条目并生成一个 id(数据库中的标识键)。当我单击下一个选项卡时(我使用 jQuery 单击事件),我想传递从第一个选项卡生成的 ID。
@model MyProject.ViewModels.MydatabaseMyVM
<div class="container">
<div class="row">
<h2>
Create Staff</h2>
</div>
@using (Html.BeginForm())
{
<ul id="datatabs" class="nav nav-tabs nav-justified">
<li class="active"><a data-toggle="tab" href="#details" id="TabDetailsLink">Personal
Details</a></li>
<li><a data-toggle="tab" href="#Tab1" id="TabTab1Link">Tab1</a></li>
<li><a data-toggle="tab" href="#Tab2" id="TabTab2Link">Tab2</a></li>
<li><a data-toggle="tab" href="#Tab3" id="TabTab3Link">Tab3</a></li>
</ul>
var data = $form.serialize(); $.post(url, data).done(function () {}.
在我的第一个选项卡中,我有来自学生模型的字段,有一个将从数据库生成的 ID。除此之外,我想保留该 ID,当我单击另一个选项卡时,该 ID 应该通过 ajax 调用传递给操作。
我正在使用 mvc 4 razor 视图和 Bootstrap 选项卡。
有人可以指导我如何将数据库生成的 ID 从一个选项卡传递到另一个选项卡。 EF用于访问数据库
如果我理解正确,在第一个选项卡上,当您单击“保存”时,您 post 使用 ajax 到 StaffCreate() 的表单,return 一个视图(不是所以很确定你为什么要 return 视图,但我会假设它在其他地方使用)。
当你post到StaffCreate()时,你在会话中保存staffId是不可能的。
然后当您单击第二个选项卡时,在您的 jquery 单击事件中,首先对一个操作执行获取请求,该操作只是 return 员工 ID 作为 Json 结果,一旦您得到id,随心所欲
所以伪代码类似于:
// your current action
[HttpPost]
public ActionResult StaffCreate(MydatabaseMyVMstaffvm)
{
// previous omitted for simplicity
Staff objStaff = MyService.StaffCreate(staffvm.Staff);
Session["StaffId"] = objStaff.StaffID;
// reset omitted for simplicity
}
获取 StaffId 的操作
public ActionResult GetCreatedStaffId()
{
return Json(Session["StaffId"], JsonRequestBehavior.AllowGet)
}
// your tab click event
$("").click(function{
$.getJSON( "@Url.Action("GetCreatedStaffId")", function( data ) {
// data is your StaffId
}
})
方法二伪代码将StaffId存储在隐藏输入中
在您在 StaffCreate() 中 return 的视图中,执行类似
的操作
<input type="hidden" id="hidStaffId" value="@Model.Staff.StaffID" />
你的标签点击事件
// your tab click event
$("").click(function{
var staffId = $("#hidStaffId").val();
})
我有一个带有多个 bootstrap 选项卡的 mvc 视图。一旦我在第一个选项卡中单击保存,将在数据库中生成一个条目并生成一个 id(数据库中的标识键)。当我单击下一个选项卡时(我使用 jQuery 单击事件),我想传递从第一个选项卡生成的 ID。
@model MyProject.ViewModels.MydatabaseMyVM
<div class="container">
<div class="row">
<h2>
Create Staff</h2>
</div>
@using (Html.BeginForm())
{
<ul id="datatabs" class="nav nav-tabs nav-justified">
<li class="active"><a data-toggle="tab" href="#details" id="TabDetailsLink">Personal
Details</a></li>
<li><a data-toggle="tab" href="#Tab1" id="TabTab1Link">Tab1</a></li>
<li><a data-toggle="tab" href="#Tab2" id="TabTab2Link">Tab2</a></li>
<li><a data-toggle="tab" href="#Tab3" id="TabTab3Link">Tab3</a></li>
</ul>
var data = $form.serialize(); $.post(url, data).done(function () {}.
在我的第一个选项卡中,我有来自学生模型的字段,有一个将从数据库生成的 ID。除此之外,我想保留该 ID,当我单击另一个选项卡时,该 ID 应该通过 ajax 调用传递给操作。 我正在使用 mvc 4 razor 视图和 Bootstrap 选项卡。 有人可以指导我如何将数据库生成的 ID 从一个选项卡传递到另一个选项卡。 EF用于访问数据库
如果我理解正确,在第一个选项卡上,当您单击“保存”时,您 post 使用 ajax 到 StaffCreate() 的表单,return 一个视图(不是所以很确定你为什么要 return 视图,但我会假设它在其他地方使用)。
当你post到StaffCreate()时,你在会话中保存staffId是不可能的。
然后当您单击第二个选项卡时,在您的 jquery 单击事件中,首先对一个操作执行获取请求,该操作只是 return 员工 ID 作为 Json 结果,一旦您得到id,随心所欲
所以伪代码类似于:
// your current action
[HttpPost]
public ActionResult StaffCreate(MydatabaseMyVMstaffvm)
{
// previous omitted for simplicity
Staff objStaff = MyService.StaffCreate(staffvm.Staff);
Session["StaffId"] = objStaff.StaffID;
// reset omitted for simplicity
}
获取 StaffId 的操作
public ActionResult GetCreatedStaffId()
{
return Json(Session["StaffId"], JsonRequestBehavior.AllowGet)
}
// your tab click event
$("").click(function{
$.getJSON( "@Url.Action("GetCreatedStaffId")", function( data ) {
// data is your StaffId
}
})
方法二伪代码将StaffId存储在隐藏输入中
在您在 StaffCreate() 中 return 的视图中,执行类似
的操作<input type="hidden" id="hidStaffId" value="@Model.Staff.StaffID" />
你的标签点击事件
// your tab click event
$("").click(function{
var staffId = $("#hidStaffId").val();
})