C# 在mvc中一次保存多个视图模型数据

C# 在mvc中一次保存多个视图模型数据,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有5门课: 1) EmployeeMainTable.cs (Employeeid是主键,其余类的Employeeid是外键) 2) EmployeeFamilyTable.cs 3) 前雇员 4) employeeaddress.cs 5) employeeEducation.cs 每个类都包含各自的属性。请在此处输入代码 现在,我想为每个类创建5个视图来输入数据,每个视图包含submit按钮以转到下一个视图 我的问题是,当我在最后一个视图中单击“完成”按钮时,我想一次保存所有模型 一旦我使

我有5门课:

1) EmployeeMainTable.cs (Employeeid是主键,其余类的Employeeid是外键)

2) EmployeeFamilyTable.cs

3) 前雇员

4) employeeaddress.cs

5) employeeEducation.cs

每个类都包含各自的属性。请在此处输入代码

现在,我想为每个类创建5个视图来输入数据,每个视图包含submit按钮以转到下一个视图

我的问题是,当我在最后一个视图中单击“完成”按钮时,我想一次保存所有模型

一旦我使用MVC4,请理解这个问题


我尝试了以下结果:

@model SecondStep
@using(Html.BeginForm("ThirdStep", "controllerName", FormMethod.Post))
{ 
    @Html.HiddenFor(model => ViewBag.FirstStepModel.Value) 
    @Html.EditorFor(model => model.Value)
    <input type="submit" value="Next"/>
}

您应该先将以前的视图模型传递给“下一个”视图,这样当单击“完成”按钮时,您就可以检索所有要在最后创建的模型(在控制器中)。(别忘了把你的模特放在帖子里)

更新1:

为什么需要控制器上的GET和POST方法

USPDATE2:示例

**案例1:如果有多个视图模型**

控制器

[HttpGet]
public ActionResult FirstStep()
{
    return View(new FirstStepModel());
}

[HttpPost]
public ActionResult SecondStep(FirstStepModel firstStepModel)
{
    ViewBag.FirstStepModel = firstStepModel;
    return View(new SecondStepModel());
}

[HttpPost]
public ActionResult ThridStep(FirstStepModel firstStepModel, SecondStepModel secondStepModel)
{
    ViewBag.FirstStepModel = firstStepModel;
    ViewBag.SecondStepModel = secondStepModel;
    return View(new ThirdStepModel());
}

[HttpPost]
public ActionResult FourthStep(FirstStepModel firstStepModel, SecondStepModel secondStepModel, ThirdStepModel thirdStepModel)
{
    ViewBag.FirstStepModel = firstStepModel;
    ViewBag.SecondStepModel = secondStepModel;
    ViewBag.ThirdStepModel = thirdStepModel;
    return View(new FourthStepModel()));
}

[HttpPost]
public ActionResult FifthStep(FirstStepModel firstStepModel, SecondStepModel secondStepModel, ThirdStepModel thirdStepModel, FourthStepModel fourthStepModel)
{
    ViewBag.FirstStepModel = firstStepModel;
    ViewBag.SecondStepModel = secondStepModel;
    ViewBag.ThirdStepModel = thirdStepModel;
    ViewBag.FourthStepModel = fourthStepModel;
    return View(new FinalStepModel());
}

[HttpPost]
public ActionRestul Finish(FirstStepModel firstStepModel, SecondStepModel secondStepModel, ThirdStepModel thirdStepModel, FourthStepModel fourthStepModel, FifthStepModel fifthStepModel)
{
    // DB Save ?
}
视图 第一步:

@model FirstStep
@using(Html.BeginForm("SecondStep", "controllerName", FormMethod.Post))
{
    @Html.EditorFor(model => model.Value)
    <input type="submit" value="Next"/>
}
@model Model
@using(Html.BeginForm("SecondStep", "controllerName", FormMethod.Post))
{
    @Html.EditorFor(model => model.Step1Value)
    <input type="submit" value="Next"/>
}

视图

第一步:

@model FirstStep
@using(Html.BeginForm("SecondStep", "controllerName", FormMethod.Post))
{
    @Html.EditorFor(model => model.Value)
    <input type="submit" value="Next"/>
}
@model Model
@using(Html.BeginForm("SecondStep", "controllerName", FormMethod.Post))
{
    @Html.EditorFor(model => model.Step1Value)
    <input type="submit" value="Next"/>
}
@模型
@使用(Html.BeginForm(“SecondStep”、“controllerName”、FormMethod.Post))
{
@EditorFor(model=>model.Step1Value)
}
第二步:

@model SecondStep
@using(Html.BeginForm("ThirdStep", "controllerName", FormMethod.Post))
{ 
    @Html.HiddenFor(model => ViewBag.FirstStepModel.Value) 
    @Html.EditorFor(model => model.Value)
    <input type="submit" value="Next"/>
}
@model Model
@using(Html.BeginForm("ThirdStep", "controllerName", FormMethod.Post))
{
    @Html.HiddenFor(model => model.Step1Value)
    @Html.EditorFor(model => model.Step2Value)
    <input type="submit" value="Next"/>
}
@模型
@使用(Html.BeginForm(“ThirdStep”,“controllerName”,FormMethod.Post))
{
@Html.HiddenFor(model=>model.Step1Value)
@EditorFor(model=>model.Step2Value)
}
第三步:

@model ThirdStep
@using(Html.BeginForm("FourthStep", "controllerName", FormMethod.Post))
{  
    @Html.HiddenFor(model => ViewBag.FirstStepModel.Value) 
    @Html.HiddenFor(model => ViewBag.SecondStepModel.Value) 
    @Html.EditorFor(model => model.Value)
    <input type="submit" value="Next"/>
}
@model Model
@using(Html.BeginForm("Finish", "controllerName", FormMethod.Post))
{
    @Html.HiddenFor(model => model.Step1Value)
    @Html.HiddenFor(model => model.Step2Value)
    @Html.EditorFor(model => model.Step3Value)
    <input type="submit" value="Next"/>
}
@模型
@使用(Html.BeginForm(“Finish”、“controllerName”、FormMethod.Post))
{
@Html.HiddenFor(model=>model.Step1Value)
@Html.HiddenFor(model=>model.Step2Value)
@EditorFor(model=>model.Step3Value)
}

您好,感谢您的上述回答。请发送一些有关此问题的链接,我对每个视图都有get和post方法。请尽快传递answer 1963:表达式树可能不包含动态operation@using(Html.BeginForm(“TStep”,“Steps”,FormMethod.Post))第10行:{11行:@Html.HiddenFor(Model=>ViewBag.FirstStepModel.Value)第12行:@Html.EditorFor(Model=>Model.SecondStepProp)第13行:事实上,我的错误是:它应该是:
@Html.HiddenFor(Model=>firstStepModelValue)
其中firstStepModelValue是一个包含以正确格式转换的FirstStepModel.Value的变量type@Html.HiddenFor(model=>ViewBag.FirstStepModel.Value)不起作用,甚至不知道如何使用此代码
@model Model
@using(Html.BeginForm("ThirdStep", "controllerName", FormMethod.Post))
{
    @Html.HiddenFor(model => model.Step1Value)
    @Html.EditorFor(model => model.Step2Value)
    <input type="submit" value="Next"/>
}
@model Model
@using(Html.BeginForm("Finish", "controllerName", FormMethod.Post))
{
    @Html.HiddenFor(model => model.Step1Value)
    @Html.HiddenFor(model => model.Step2Value)
    @Html.EditorFor(model => model.Step3Value)
    <input type="submit" value="Next"/>
}