在mvc4中维护视图之间的数据

时间:2014-03-06 20:09:49

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我想知道如何在MVC4中的多个动作之间传递数据。 例如,用户登陆一个页面(未经过身份验证),填写一些数据然后转到第二个视图,填写另一组数据,然后在提交时,代码检查用户是否经过身份验证然后继续进行,否则转到登录/注册视图,进行身份验证并重定向到第3步。 现在,我想知道如何在对用户进行身份验证时保留数据,我应该将数据放在会话对象中,一旦用户完成身份验证检索数据? 我不确定如何以正确的方式在MVC中实现它,因为它与Web表单相比有点不同。

提前致谢,Laziale

3 个答案:

答案 0 :(得分:1)

在这些场景中与WebForm没有什么不同。您可以使用Session,即使通常最好不要在服务器中存储状态,也可以使用cookie(如果数据很小)。

答案 1 :(得分:1)

您可以做的是在初始控制器中创建TempData键,并在返回值时,其值将是用户输入的值。

在您的控制器操作中:

 [HttpPost]
 public ActionResult LandingPage(LandingPageViewModel model)
 {
    TempData["Model"] = model;
    return RedirectToAction("OtherDataPage");
 }

因此,在您的目标网页上,当用户发送输入时,您将其存储在TempData中,然后将用户重定向到另一页以填充信息。

在另一个操作中,您可以使用TempData从用户以前的输入设置对象值。

 public ActionResult OtherDataPage()
 {
    LandingPageViewModel model = new LandingPageViewModel();
    model = TempData["Model"];
    return View();
 }

这样的事情应该保留用户输入

答案 2 :(得分:0)

您可以使用“TempData”或“Viewbag”获取更多信息,您可以看到此链接 What is ViewData, ViewBag and TempData?