Asp.net mvc .NET MVC3中多页表单的最佳实践/设计
我正在开发一个web应用程序,它涉及用户填写一个跨多个页面的多步骤表单。表单顶部有选项卡式导航(这些链接不提交当前页面),底部有下一步按钮(提交)。我正在考虑几种处理表单提交/验证的策略:Asp.net mvc .NET MVC3中多页表单的最佳实践/设计,asp.net-mvc,asp.net-mvc-3,validation,multi-step,Asp.net Mvc,Asp.net Mvc 3,Validation,Multi Step,我正在开发一个web应用程序,它涉及用户填写一个跨多个页面的多步骤表单。表单顶部有选项卡式导航(这些链接不提交当前页面),底部有下一步按钮(提交)。我正在考虑几种处理表单提交/验证的策略: 每个表单页面一个操作方法和视图。当您点击next时,它将表单提交给下一页的action方法。如果存在验证错误,将重定向回上一页: URL是描述性的,可以复制粘贴 仅在错误情况下重定向 由于重定向没有表单数据,因此我们丢失了提交的上下文,这使得很难显示某些错误消息 如果用户试图访问流程中尚未准备好的步骤,则相
- URL是描述性的,可以复制粘贴
- 仅在错误情况下重定向
- 由于重定向没有表单数据,因此我们丢失了提交的上下文,这使得很难显示某些错误消息
- 如果用户试图访问流程中尚未准备好的步骤,则相同的验证逻辑可用于重定向用户
- URL是描述性的,可以复制粘贴
- 重定向非常常见(不确定这是否糟糕)
- 显示验证错误时,我们与表单提交处于同一请求中,因此我们可以完全访问无效输入
- 如果我们希望能够添加一个“Previous”按钮(该按钮也提交),则必须传递额外的上下文
MyController/MyAction/{step}
)。控制器消息根据验证和当前步骤选择要返回的视图页面
- URL不是描述性的(例如,如果我提交步骤1转到步骤2,那么无论返回第1页(无效)还是第2页,用户看到的URL都是相同的
- 没有重定向
- 显示验证错误时,我们与表单提交处于同一请求中,因此我们可以完全访问无效输入
- 这些方法的其他优点和缺点是什么?我的正确吗?我列出的一些缺点是否可以设计出来
- 我是否应该使用标准方法来解决这个问题?如果是,为什么是标准方法
最后,考虑上一个按钮直接链接到前一个步骤,而不是提交表单。否则,用户可能会陷入一个无效的步骤。这发生在我们身上,并且再次工作得很好。
希望这是有帮助的。祝你好运!听起来你需要接受处理请求和返回的操作的概念(在大多数情况下)视图。每个表单页面都有一个操作,允许您拥有一个特定于该页面上数据的视图模型。如果模型无效,该操作可以返回相同的视图,也可以返回下一页的视图。不需要重定向。您可以在
表单中使用隐藏的输入,在页面之间传递上下文。@HABO:但是如果我没有重定向,用户在第1页上提交了无效的内容,那么即使返回的视图是第1页的无效视图,他们也不会看到第2页的url吗?您的操作选择了要返回的适当视图:第1页或第2页。它如何决定取决于您。浏览器显示它得到的任何内容,但不需要请求通过重定向创建一个不同的页面。您提到了POST-redirect-GET模式。是否存在频繁重定向使页面转换速度变慢的风险(特别是因为我们在每次请求时都从数据库加载部分模型)当然。这是你必须考虑的事情。在后重定向下,由于Web的无状态特性,工作变得非常好。但是,如果性能是一个问题(缓慢查询等)。您可能想考虑另一个存储解决方案,例如SQL提供程序,或者在会话中存储对象。每个视图使用一个模型,步骤n如何知道步骤1和步骤2完成了CORE。