gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:46:35 24 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序,该应用程序涉及用户填写跨多个页面的多步骤表单。表单顶部有标签导航(这些链接不提交当前页面),底部有一个下一步按钮(提交)。我正在考虑几种处理表单提交/验证的策略:

  • 每个表单页面的一种操作方法和 View 。当您点击 next 时,它会将表单提交给下一页的操作方法。如果存在验证错误,您将被重定向回上一页:
  • URL 是描述性的,可以复制粘贴
  • 仅在错误情况下重定向
  • 由于重定向没有表单数据,我们丢失了提交的上下文,这使得很难显示某些错误消息
  • 如果用户尝试访问流程中尚未准备就绪的步骤,则相同的验证逻辑可用于重定向用户
  • 每个表单页面的一种操作方法和 View 。当您点击下一步时,它会将表单提交到当前页面操作。如果存在验证错误,则返回相同的 View 。否则,我们重定向到下一页操作:
  • URL 是描述性的,可以复制粘贴
  • 重定向很常见(不确定这是否不好)
  • 显示验证错误时,我们与表单提交处于同一请求中,因此我们可以完全访问无效输入
  • 例如,如果我们希望能够添加一个“上一个”按钮,该按钮也提交
  • ,则必须传递额外的上下文。
  • 所有页面的一种操作方法。 URL 包含有关正在提交的步骤的附加上下文(例如 MyController/MyAction/{step} )。 Controller 消息根据验证和当前步骤选择要返回的 View 页面。
  • URL 不是描述性的(例如,如果我提交第 1 步以转到第 2 步,那么无论返回第 1 页(无效)还是第 2 页
  • ,用户看到的 URL 都相同)
  • 无重定向
  • 显示验证错误时,我们与表单提交处于同一请求中,因此我们可以完全访问无效输入
  • 我没有在这里列出的另一种方法

  • 我试图列举我认为的每种方法的一些优缺点,但我很想知道:
  • 这些方法的其他优缺点是什么?我的正确吗?我列出的一些缺点可以围绕设计吗?
  • 我应该使用这个问题的标准方法吗?如果是这样,为什么它是标准方法?
  • 最佳答案

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

    正如您所说,您的 URL 将是可深层链接的,这意味着用户可以复制/粘贴,更重要的是,他们可以将页面添加为浏览器中的收藏夹,让他们很容易回到同一个地方。在我看来,这使得选项 3 过时了。

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

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

    希望这是有帮助的。祝你好运!

    关于asp.net-mvc - .NET MVC3 中多页表单的最佳实践/设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341439/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com