为可编辑的asp.net WebControl设计验证

时间:2011-04-19 18:05:02

标签: asp.net validation inheritance web-controls

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

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

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

这似乎意味着

  • 继承每个WebControl(TextBox,DropDown等)和(重新)编码我的每个控件类的公共验证属性和方法(有或没有看似浪费的界面),或

    < / LI>
  • 编写基类(比如ValidatedInputControl)一次,找到一种在继承自ValidatedInputControl的类中实现单个WebControl(文本框等)的方法。我怀疑这意味着渲染等,或

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

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

1 个答案:

答案 0 :(得分:0)

为什么几个小时之后,愚蠢的问题总是显得笨拙......

对于任何有兴趣的人来说,在休息和吃晚餐之后不难想象...多态101和一些.Net魔法...

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

现在创建你想要的各个控件(myTextBox,myDropDown等)继承自MyBaseClass - 这些单独的控件类现在的类型为 MyBaseClass和CompositeControl

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

总而言之......就像往常一样只是复合控制业务......