Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在mvc razor视图中跨选项卡传递id_Jquery_Asp.net Mvc_Asp.net Mvc 4_Asp.net Ajax - Fatal编程技术网

Jquery 如何在mvc razor视图中跨选项卡传递id

Jquery 如何在mvc razor视图中跨选项卡传递id,jquery,asp.net-mvc,asp.net-mvc-4,asp.net-ajax,Jquery,Asp.net Mvc,Asp.net Mvc 4,Asp.net Ajax,我有一个具有多个引导选项卡的mvc视图。在第一个选项卡中单击save后,将在数据库中生成一个条目,并生成一个id(数据库中的标识键)。当我单击下一个选项卡(我使用jQuery单击事件)时,我希望传递从第一个选项卡生成的id @model MyProject.ViewModels.MydatabaseMyVM <div class="container"> <div class="row"> <h2> Create Staff&

我有一个具有多个引导选项卡的mvc视图。在第一个选项卡中单击save后,将在数据库中生成一个条目,并生成一个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 () {}. 
@model MyProject.ViewModels.MydatabaseMyVM
创建工作人员
@使用(Html.BeginForm())
{
var data=$form.serialize();$.post(url,data).done(函数(){})。
在我的第一个选项卡中,我有来自学生模型的字段,有一个id将从数据库中生成。保存该id后,我希望保留该id,当我单击另一个选项卡时,该id应通过ajax调用传递给操作。 我使用的是MVC4Razor视图和引导选项卡。
是否有人可以指导我如何将数据库中生成的id从一个选项卡传递到另一个选项卡。EF用于访问数据库

如果我理解正确,在第一个选项卡上,当您单击“保存”时,您将使用ajax将表单发布到StaffCreate(),即返回视图(我不太清楚为什么要返回视图,但我假设它在其他地方使用)

如果在发布到StaffCreate()时,无法将staffId保存在会话中

然后,当您单击第二个选项卡时,在jQueryClick事件中,首先对一个操作执行一个get请求,该操作只将人员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
}
采取行动以获取固定资产

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
    }
})

方法2 Psuedo代码存储隐藏输入中的StaffId 在StaffCreate()中返回的视图中,执行以下操作

<input type="hidden" id="hidStaffId" value="@Model.Staff.StaffID" />

您是如何在第一个选项卡上保存数据的?我的意思是您是在发布表单还是通过ajax发布的?另外,您在访问数据库时使用的是什么技术?1.ajax调用2.EF进行db访问。是否有任何方法可以使用out session variable?我可以想到两种方法:1.返回视图时,创建一个隐藏的输入,并保存它e id,然后单击tab时,使用jquery从隐藏的输入中获取值-但这可能有缺陷,因为任何人都可以更改隐藏的输入值。2.当ajax调用操作时,而不是从会话中读取,使用您为员工提供的信息重新查询db。您能给我看一个创建隐藏输入的示例代码吗..加载视图时不会生成id。让我检查视图中是否存在ir
// your tab click event
$("").click(function{
    var staffId = $("#hidStaffId").val();
})