如何在 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();
})