我似乎在ASP.NET网络表单中继续遇到这些复杂的显示/隐藏场景,其中逻辑“如果字段A等于等等,字段B等于blahblah,则字段C显示/隐藏/验证/等等。 “在我开始运行并开始构建自定义验证器和自定义控件之前,我可以更容易地在标记或后端代码中管理它,是否有任何库或更简单的解决方案我在那里疯狂? jQuery使工作变得更容易,但我觉得我可以将我正在讨论的很多东西抽象成一个更优雅的解决方案。
所有相互依赖或可能触发事件的控件都是我自己的自定义控件,所以我觉得我可以开始编写一个小框架来处理它:
<my:DynamicShowHide runat="server">
<PrerequisiteFields>
<PrerequisiteField ControlId="FieldA" Value="blah" />
<PrerequisiteField ControlId="FieldB" Value="blahblah" />
</PrerequisiteFields>
<DependentFields>
<DependentField ControlId="FieldC" />
</DependentFields>
</my:DynamicShowHide>
...这样,如果Prerequisite值都被评估为true,则DependentField将显示,如果不是则隐藏。
似乎(和感觉)就像我过度工程,但是我越来越频繁地遇到像这样疯狂的大而复杂的决策树。任何人都知道更好的方法或现有的库在这些方面做某事吗?
答案 0 :(得分:1)
出于兴趣,在哪些特定情况下最突出地使用决策树?
例如,我猜测它在大多数情况下都是动态数据(从数据库中检索的数据)。并说它的常见用法是表格(或问卷) - 很难说,因为你提供了使用decsiion树的例子。
如果是这种情况,那么处理数据库中的所有内容并动态填充浏览器中的控件是不是很好?您可以在数据库中设置所有dependantUpon和ansewrLeadsTo,以及可能的答案和要生成的输入控件的类型,这将导致更清晰的解决方案。
当然,初始设置很难,但从长远来看,考虑灵活性和维护,应该没问题。