【问题标题】:patterns to use when building complex web UI构建复杂 Web UI 时使用的模式
【发布时间】:2010-06-24 16:17:43
【问题描述】:

我需要实现一个神奇的、动态的 UI,它使用复杂的样式验证:

  • 如果 A = 1,则显示控件 B、C、D。B 为 需要,C 不是,D 不是 required 必须小于 30,如果它 已填充。

  • 如果 A = 2,则显示控件 B、D、E。B 为 不需要,D 是必需的,但有 没有限制,也不需要 E。

  • 如果 B 不为空,则显示控件 B、D、E。B 为 不需要,D 是必需的,但有 没有限制,也不需要 E。

从历史上看,我尽可能将我的表示层设置为“哑”,因为它只负责捕获用户输入并将其绑定到适当的域模型。反过来,域模型包含验证其状态和任何子对象的状态所需的逻辑,然后通过notifications 将任何无效状态传达给表示层。因此,对高度“智能”用户界面的这种要求对我来说代表了一种偏离。

我想我别无选择,只能构建 2 个非常相似的类层次结构:

  1. 将捕获表示业务规则(即哪些字段可见)并控制在视图中呈现的内容
  2. 将捕获域业务规则(当字段 A = X 时,字段 B 不应为 null 并且在 n 到 m 的范围内)以禁止具有无效状态的对象被持久化

关于我的前进战略,我的问题远多于答案。是否有一组设计模式可以用来构建这样一个动态 UI?我确实可以选择使用 ASP.NET MVC 或 WebForms,因此无论哪种方法都能生成更清晰、可测试的代码,都是首选。

【问题讨论】:

    标签: asp.net asp.net-mvc design-patterns validation user-interface


    【解决方案1】:

    我肯定会使用 MVC,并且我也会将逻辑保留在业务层中。

    您可以使用 jQuery ajax 回发将其连接起来,然后与业务层签入并被告知要显示的内容。

    一旦做出选择,您就可以返回一个局部视图并用返回的 html 替换 div 的内容。

    我知道这听起来像一个丑陋的解决方案,但我认为在这种级别的交互与背后的代码你别无选择。如果你每次都提交,那看起来很丑。

    另一个好处是您不仅需要返回部分视图。您可以返回一个 json 对象,该对象描述您的控件的新规则,例如长度等。

    然后您使用 jquery 来监控输入并执行新规则。

    如果可能,也尝试以 REST 的方式思考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多