【发布时间】:2014-05-02 03:38:07
【问题描述】:
我正在开发一个 MVC 5 应用程序并且有以下场景。 用户单击我的注册链接以创建一个帐户,并提供这样的视图。按预期工作。
[HttpGet]
[AllowAnonymous]
public ActionResult RenderRegisterModal(string userType)
{
IList<UserTypesDto> userTypes = _userService.GetUserTypes();
var usersRegisterUserViewModel = new UsersRegisterUserViewModel {UserTypes = new List<SelectListItem>()};
usersRegisterUserViewModel.UserTypes.Add(new SelectListItem
{
Text = "Select a registration type",
Value = "0"
});
foreach (UserTypesDto userTypeDto in userTypes)
{
usersRegisterUserViewModel.UserTypes.Add(new SelectListItem
{
Text = userTypeDto.UserType,
Value = userTypeDto.UserTypeId.ToString()
});
}
return PartialView("_RegisterModal", usersRegisterUserViewModel);
}
现在,根据他们选择的客户类型/用户类型,我需要呈现不同的视图。将视图放入模式中应该没有任何问题,因为它是 ajax ......所以让我们称之为伪向导来收集数据。我遇到的问题以及这个可能很简单的问题的基础,我想太多了,我如何保存每一步的数据?临时表? InMemory Cache 使用会话 id 作为键?饼干? “毛”
帖子转到的 ActionMethod 如下所示。
[AllowAnonymous]
[HttpPost]
public ActionResult Register(UsersRegisterUserViewModel usersRegisterUserViewModel)
{
//TODO Return a view for the next step based on the CustomerType contained in the viewModel
return View();
}
任何反馈都将不胜感激。
【问题讨论】:
-
您是否考虑过使用 TempData 集合。它只为来自用户的下一个请求保留数据。
-
TempData 使用 Session。客户端不允许会话变量。看起来我可能有 3 个步骤。
-
仍在等待一个好的答案
-
好吧@Romias 有一个很好的答案。但你也可以使用浏览器的本地存储。