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