什么是最终的解决方法)在ASP.NET MVC应用程序中坚持'Conversational state'的最佳实践是什么? ?
期望中的场景是:
- 多步的形式。
- 如果一个页面上有标签,标签应该坚持自己的'的视图状态” 无论导航用户选择
- ,它应该不会影响(更恰当,
bother
)会话状态管理。
这些只是几个方面,但我觉得它们实际上有很大的相关性。
什么是最终的解决方法)在ASP.NET MVC应用程序中坚持'Conversational state'的最佳实践是什么? ?
期望中的场景是:
bother
)会话状态管理。这些只是几个方面,但我觉得它们实际上有很大的相关性。
我曾经在Asp.Net MVC中使用过Wizard类型的窗体,在这种情况下做的最好的事情是使用Model/ModelBinding来跟踪窗体输入。
我们可以创建一个控制器操作链(对于每个步骤),每个步骤的输出模型用作下一个步骤(操作)的输入模型。
例如,如果我们有三个步骤来创建用户。然后UserController可以为每个步骤执行操作。
public ActionResult Step1()
{
User user = new User();
return View(user);
}
[Post]
public ActionResult Step1(User user)
{
//perform business validation
RedirectToAction<UserController>(u => Step2(user));
}
之后Step2操作将接管来自Step1的修改后的用户并可以呈现其自己的视图等等。
您可能还想查看http://blog.maartenballiauw.be/post/2009/10/08/Leveraging-ASPNET-MVC-2-futures-ViewState.aspx。 MVC Futures中有一个Html.Serialize()助手。该文章将其称为轻量级Viewstate,但它实际上只是一个荣耀的包装,“序列化此对象并将base64字符串存储在隐藏的表单字段中”。如果您需要将状态与单个页面相关联,而不是整个会话,则此帮助器可能适合您的需求。
不确定“解决方法”,但你有没有考虑过使用AJAX和jQuery?根据您列出的要求,两者都是适当的。
希望我从不使用AJAX和JavaScript,但使用+1提及standart fallback选项:) – Bubba88 2010-05-08 06:54:24
什么是“会话状态”? – Pierreten 2010-05-02 05:44:11
这是有关当前用户和Web应用程序对话的信息。我的意思是,这包括任何东西:从用户的身份,通过当前交互的有效模式,到视觉元素的期望状态(在ASP.NET WebForms中称为viewstate) – Bubba88 2010-05-02 05:47:53