2017-04-07 105 views
0

嗨有一个场景,我在第一个视图中有3个视图,我有一些文本框,然后点击下一个按钮时下一个按钮第二个视图将显示,第二个视图也会有一些文本框和下一个按钮,第三个视图是最后的视图,它具有很少的文本框和提交/完成按钮。点击提交/完成按钮,将所有来自view1,view2和view3的数据保存到数据库。如何使用ASP.NET MVC实现它如何将数据从一个视图传递到mvc中的其他视图

+0

它是3个独立的视图或在一个单独的视图3个独立的面板/窗格/ div这样的东西? –

+0

对所有3种形式使用共享viewmodel,并且保留来自先前插入表单的所有输入的'Session' /'TempData'应该是适用的。在最后一种形式中,您可以编写逻辑以基于存储在viewmodel中的值将数据插入到数据库中。 –

回答

0

您可以使用temp-data及其keep方法在后续请求中保留数据。 只需将所有必需的现场数据保存到临时数据中,并将所有这些数据保存在一个对象(临时数据)中并保存即可。

0

下面是一个例子。对于它:

public ActionResult Add(Model model) 
{ 
      if(ModelState.IsValid) 
      { 
       db.Model.Add(model); 
       db.SaveChanges(); 
       return RedirectToAction("Add2"); 
      } 
      return View(model); 
} 

它重定向到第二个视图或一个局部视图,和第二个到第三个一样。希望能帮助到你。

0

如果要将数据从一个视图传递到另一个视图,则可以使用TempData ex。TempData [“Key”] =“test”;

,可以从TempData的获得价值一样

@{ 
    var abc = TempData["Key"]; 
} 

注:你可以得到TempData的值之后,它会破坏下一个动作。

+0

我需要创建多少tempdata假设我在第一种形式中有大约50个字段,那么在这种情况下,我需要创建50个tempdata? –

+0

您也可以将对象或集合传递给临时数据,例如TempData [“SaveMsg”] = new object [] {m​​odel.ImageUrl,model.Name}; –

+0

这里的对象将是你的模型,并且在你的视图中你可以从临时数据转换到你的模型。所以你不需要单个表单域的多个tempdata –

相关问题