2

当使用我需要实现一个wizardy,动态的用户界面,使用该样式的复杂的验证:模式来构建复杂的web 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将任何无效状态传递到表示层。因此,对于高度“智能”用户界面的这种要求对我来说是一种启示。

我觉得我别无选择,只能建造2个非常相似的类层次:

  1. 一个,将捕获介绍业务规则(即哪些领域是可见的),并控制在查看什么使
  2. 一个它将捕获域业务规则(当字段A = X,然后字段B不应为空并且在n到m的范围内)以禁止具有无效状态的对象被持久化

Sill I have more more问题比我的答案要好tegy前进。是否有一组设计模式可以用来构建这样的动态UI?我确实可以选择使用ASP.NET MVC或WebForms,因此无论哪种方法都会产生更清晰,可测试的代码。

回答

0

我肯定会使用MVC,我也会保持业务层的逻辑。

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

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

我知道这听起来像一个丑陋的解决方案,但我认为与这种级别的交互性与你身后的代码没有多少选择。如果你每次提交一次,那么这看起来很丑。

另一个好处是,你不只是需要返回一个partialview。您可以返回一个json对象,其中描述了您的控件的新规则,如长度等。

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

也尝试尽可能RESTfully思考。