繁体   English   中英

在ASP.NET MVC应用程序中保留“会话状态”的最佳实践是什么?

[英]What are the best practices to persist`Conversational state' in ASP.NET MVC applications?

最终的解决方法是什么?

所需的方案是:

  1. 多步骤表格。
  2. 如果页面上有标签,则标签应保留其“ viewstate”
  3. 无论导航用户选择了什么,它都不会影响(更适当地, bother )会话状态管理。

这些只是几个方面,但是我发现它们在实践上非常相关。

我曾经在Asp.Net MVC中使用过向导形式的表单,在这种情况下,最好的办法是使用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)); 

    }

此步骤2之后,操作将接替步骤1中已修改的用户,并可以呈现其自己的视图,依此类推。

您可能还需要查看http://blog.maartenballiauw.be/post/2009/10/08/Leveraging-ASPNET-MVC-2-futures-ViewState.aspx MVC Futures中有一个Html.Serialize()帮助器。 本文将其称为轻量级Viewstate,但实际上只是一个美化的包装器,用于“序列化此对象并将base64字符串存储在隐藏的表单字段中”。 如果您需要将状态与单个页面而不是整个会话相关联,则该助手可能适合您的需求。

不确定“解决方法”,但是您是否考虑过使用AJAX和jQuery? 两者都将根据您列出的要求而适当。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM