加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – .NET MVC3中多页面表单的最佳实践/设计

发布时间:2020-12-16 03:48:22 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个Web应用程序,该应用程序涉及用户填写跨越多个页面的多步骤表单.表单顶部有标签导航(这些链接不提交当前页面)和底部的下一个按钮(确实提交).我正在考虑处理表单提交/验证的几种策略: 每个表单页面一个操作方法和视图.当您点击下一步时,它会将
我正在开发一个Web应用程序,该应用程序涉及用户填写跨越多个页面的多步骤表单.表单顶部有标签导航(这些链接不提交当前页面)和底部的下一个按钮(确实提交).我正在考虑处理表单提交/验证的几种策略:

>每个表单页面一个操作方法和视图.当您点击下一步时,它会将表单提交给下一页的操作方法.如果存在验证错误,您将被重定向回上一页:

> URL是描述性的,可以复制粘贴
>仅在错误情况下重定向
>由于重定向没有表单数据,因此我们丢失了有关提交的上下文,这使得很难显示某些错误消息
>如果用户尝试访问尚未准备好的流程中的步骤,则相同的验证逻辑可用于重定向用户

>每个表单页面一个操作方法和视图.当您点击下一步时,它会将表单提交给当前页面操作.如果存在验证错误,则返回相同的视图.否则,我们会重定向到下一页操作:

> URL是描述性的,可以复制粘贴
>重定向很常见(不确定这是不是很糟糕)
>显示验证错误时,我们与表单提交的请求相同,因此我们可以完全访问无效输入
>如果我们想要能够添加一个也提交的“上一个”按钮,则必须传递其他上下文

>所有页面的一种操作方法. URL包含有关正在提交的步骤的其他上下文(例如MyController / MyAction / {step}).控制器消息根据验证和当前步骤选择要返回的视图页面.

> URL不具有描述性(例如,如果我提交步骤1转到步骤2,则无论是否返回第1页(无效)或第2页,用户看到的URL都是相同的
>没有重定向
>显示验证错误时,因此我们可以完全访问无效输入

>我在这里没有列出的另一种方法

我试图列举我所看到的每种方法的一些优点和缺点,但我很想知道:

>这些方法的其他优点和缺点是什么?我的是正确的吗?我列出的一些缺点可以设计一下吗?
>我应该使用这个问题的标准方法吗?如果是这样,为什么它是标准方法?

解决方法

我强烈建议选项2稍作修改.您可能还想考虑为每个操作/视图创建一个视图模型.如果您有一个跨越所有页面的模型,则将在所有属性中进行验证,这意味着即使用户只能在每个屏幕上编辑模型的一部分,他们也可以获得他们看不到的属性的验证警告.我们最近在一个项目中做到了这一点并且工作得非常好.你必须在后端进行一些数据操作才能将所有内容重新组合在一起,但最终还是值得的.

正如您所说,您的网址可以深入链接,这意味着用户可以复制/粘贴,更重要的是,他们可以将网页添加为浏览器中的收藏,让他们可以非常轻松地回到同一个地方.在我看来,这使选项3过时了.

您还将受益于所有导航逻辑都在一个地方发生的事实.您必须在客户端(您当前所在的页面)上存储“向导”的状态,以便您的控制器知道如何处理提交.您需要分析向导的状态,并决定用户下一步需要做什么.如果选择选项1,您将无法知道“来自哪里”,并且很难向客户端显示服务器验证错误.这是POST – REDIRECT – GET模式的一个很好的例子.每个页面都有2个动作,一个采用简单ID的GET,以及一个采用更复杂模型的POST.发布服务器,找出接下来的位置,重定向到GET.

最后,考虑您之前的按钮只是直接链接到上一步,而不是提交表单.否则,用户可能会陷入无效步骤.这发生在我们身上,再一次,非常好.

希望这很有帮助.祝好运!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读