我需要实现一个使用样式的复杂验证的向导动态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的这种要求对我来说是一个偏离。
我认为我别无选择,只能构建两个非常相似的类层次结构:
对于我的战略前进,我有更多的问题而不是答案。我可以利用一组设计模式来构建这样一个动态UI吗?我可以选择使用ASP.NET MVC或WebForms,因此无论哪种方法都可以生成更干净,可测试的代码。
答案 0 :(得分:0)
我肯定会使用MVC,我也会将逻辑保留在业务层中。
您可以使用jQuery ajax回发来连接它,然后检查业务层并告知要显示的内容。
一旦做出选择,您就可以返回局部视图并用返回的html替换div的内容。
我知道这听起来像是一个丑陋的解决方案,但我认为通过与您背后的代码的这种交互程度,您别无选择。如果你每次都提交,那看起来很难看。
另一个好处是您不仅需要返回部分视图。您可以返回一个json对象,该对象描述控件的新规则,例如长度等。
然后使用jquery监视输入并强制执行新规则。
如果可能的话,也会尝试RESTful。