构建复杂Web UI时使用的模式

时间:2010-06-24 16:17:43

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

我需要实现一个使用样式的复杂验证的向导动态UI:

  • 如果A = 1,则显示对照B,C,D.B为 要求,C不是,D不是 必要时必须少于30 已填充。

  • 如果A = 2,则显示对照B,D,E。B是 不需要,D是必需的,但有 没有限制,E不是必需的。

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

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

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

  1. 将捕获演示文稿业务规则(即哪些字段可见)并控制在视图中呈现的内容
  2. 将捕获域业务规则的一个(当字段A = X,然后字段B不应为空且在n到m的范围内时)以禁止具有无效状态的对象被保留
  3. 对于我的战略前进,我有更多的问题而不是答案。我可以利用一组设计模式来构建这样一个动态UI吗?我可以选择使用ASP.NET MVC或WebForms,因此无论哪种方法都可以生成更干净,可测试的代码。

1 个答案:

答案 0 :(得分:0)

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

您可以使用jQuery ajax回发来连接它,然后检查业务层并告知要显示的内容。

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

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

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

然后使用jquery监视输入并强制执行新规则。

如果可能的话,也会尝试RESTful。