【发布时间】: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 个非常相似的类层次结构:
- 将捕获表示业务规则(即哪些字段可见)并控制在视图中呈现的内容
- 将捕获域业务规则(当字段 A = X 时,字段 B 不应为 null 并且在 n 到 m 的范围内)以禁止具有无效状态的对象被持久化
关于我的前进战略,我的问题远多于答案。是否有一组设计模式可以用来构建这样一个动态 UI?我确实可以选择使用 ASP.NET MVC 或 WebForms,因此无论哪种方法都能生成更清晰、可测试的代码,都是首选。
【问题讨论】:
标签: asp.net asp.net-mvc design-patterns validation user-interface