asp.net-mvc – .NET MVC3中多页面表单的最佳实践/设计
我正在开发一个Web应用程序,该应用程序涉及用户填写跨越多个页面的多步骤表单.表单顶部有标签导航(这些链接不提交当前页面)和底部的下一个按钮(确实提交).我正在考虑处理表单提交/验证的几种策略:
>每个表单页面一个操作方法和视图.当您点击下一步时,它会将表单提交给下一页的操作方法.如果存在验证错误,您将被重定向回上一页: > URL是描述性的,可以复制粘贴 >每个表单页面一个操作方法和视图.当您点击下一步时,它会将表单提交给当前页面操作.如果存在验证错误,则返回相同的视图.否则,我们会重定向到下一页操作: > URL是描述性的,可以复制粘贴 >所有页面的一种操作方法. URL包含有关正在提交的步骤的其他上下文(例如MyController / MyAction / {step}).控制器消息根据验证和当前步骤选择要返回的视图页面. > URL不具有描述性(例如,如果我提交步骤1转到步骤2,则无论是否返回第1页(无效)或第2页,用户看到的URL都是相同的 >我在这里没有列出的另一种方法 我试图列举我所看到的每种方法的一些优点和缺点,但我很想知道: >这些方法的其他优点和缺点是什么?我的是正确的吗?我列出的一些缺点可以设计一下吗? 解决方法
我强烈建议选项2稍作修改.您可能还想考虑为每个操作/视图创建一个视图模型.如果您有一个跨越所有页面的模型,则将在所有属性中进行验证,这意味着即使用户只能在每个屏幕上编辑模型的一部分,他们也可以获得他们看不到的属性的验证警告.我们最近在一个项目中做到了这一点并且工作得非常好.你必须在后端进行一些数据操作才能将所有内容重新组合在一起,但最终还是值得的.
正如您所说,您的网址可以深入链接,这意味着用户可以复制/粘贴,更重要的是,他们可以将网页添加为浏览器中的收藏,让他们可以非常轻松地回到同一个地方.在我看来,这使选项3过时了. 您还将受益于所有导航逻辑都在一个地方发生的事实.您必须在客户端(您当前所在的页面)上存储“向导”的状态,以便您的控制器知道如何处理提交.您需要分析向导的状态,并决定用户下一步需要做什么.如果选择选项1,您将无法知道“来自哪里”,并且很难向客户端显示服务器验证错误.这是POST – REDIRECT – GET模式的一个很好的例子.每个页面都有2个动作,一个采用简单ID的GET,以及一个采用更复杂模型的POST.发布服务器,找出接下来的位置,重定向到GET. 最后,考虑您之前的按钮只是直接链接到上一步,而不是提交表单.否则,用户可能会陷入无效步骤.这发生在我们身上,再一次,非常好. 希望这很有帮助.祝好运! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Asp.Net Core API网关Ocelot
- .net – IActionFilter vs IResultFilter
- 为什么asp.net OnTextChanged不工作
- asp.net-mvc – 在ASP.NET MVC中调用Session_End()的时间是
- asp.net-mvc – 为什么ASP.NET MVC 4与IList for editor不能
- 如何在实时服务器上调试asp.net应用程序
- asp.net-mvc – 如何从VOID方法重定向到MVC3中的另一个动作
- asp.net – 如何优化T-SQL查询
- asp.net-mvc – 通过自定义HTML Helper扩展方法渲染Javascr
- asp.net-mvc-5 – MVC 5 AttributeRouting Catch All