【问题标题】:Designing Validation for Editable asp.net WebControls为可编辑的 asp.net WebControls 设计验证
【发布时间】:2011-04-21 00:25:05
【问题描述】:

由于对 Asp.Net 的验证控件(脱节、冗长、笨拙)感到恼火,我决定看看是否可以创建一系列输入控件,每个控件都有自己的验证方法和属性。

我的设计标准之一是允许我的 Validation 属性在 VS intellisense 中显示为 Tag 属性以及控件的其余属性。

我的第一个想法是创建一个从 WebControl 继承并实现新属性和方法的基类,但没有多重继承,这意味着无法从 TextBox 派生。

这似乎意味着要么

  • 从每个 WebControl(TextBox、DropDown 等)继承并(重新)为我的每个控件类(带有或不带有似乎很浪费的接口)编码公共验证属性和方法,或者

  • 对基类(比如 ValidatedInputControl)进行一次编码,然后找到一种方法在从 ValidatedInputControl 继承的类中实现各个 WebControl(文本框等)。我怀疑这意味着渲染等,或者,

  • 寻找其他更有效的模式/设计

所以,我正在寻找建议......

【问题讨论】:

    标签: asp.net validation inheritance web-controls


    【解决方案1】:

    为什么愚蠢的问题总是在几个小时后看起来更愚蠢......

    对于任何有兴趣的人来说,在休息和吃晚饭后弄清楚它并不难......多态性 101 和一些 .Net 魔法......

    使用您希望所有派生控件继承的成员创建一个具体类 (MyBaseClass)。从 CompositeControl 类继承此基类。

    现在创建您想要从 MyBaseClass 继承的单个控件(myTextBox、myDropDown 等) - 这些单个控件类现在属于 MyBaseClass 和 CompositeControl 类型。

    因此,在每个单独的控件类(例如 MyTextBox)内,您现在可以实例化适当的本机控件 (TextBox) 并像任何复合控​​件一样对其进行管理,但它也可以访问 MyBaseClass 成员。

    duhh... 总而言之,CompositeControl 一切照旧.....

    【讨论】:

      猜你喜欢
      • 2016-05-24
      • 2016-01-04
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      相关资源
      最近更新 更多