Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设计可编辑asp.net网络控件的验证_Asp.net_Validation_Inheritance_Web Controls - Fatal编程技术网

设计可编辑asp.net网络控件的验证

设计可编辑asp.net网络控件的验证,asp.net,validation,inheritance,web-controls,Asp.net,Validation,Inheritance,Web Controls,由于Asp.Net的验证控件(脱节、冗长、笨拙)让我很恼火,我决定看看是否可以创建一系列输入控件,每个控件都有自己的验证方法和属性 我的设计标准之一是允许我的验证属性在VS intellisense中显示为标记属性以及控件的其余属性 我的第一个想法是创建一个基类,该基类继承自WebControl并实现新的属性和方法,但没有多个iheritance,这意味着无法从TextBox派生 这似乎也意味着 从每个WebControl(文本框、下拉列表等)继承和(重新)编码每个控件类的公共验证属性和方法(

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

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

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

这似乎也意味着

  • 从每个WebControl(文本框、下拉列表等)继承和(重新)编码每个控件类的公共验证属性和方法(有或没有看似浪费的接口),或

  • 对基类(比如ValidateInputControl)进行一次编码,并在继承自ValidateInputControl的类中找到实现单个WebControl(textbox等)的方法。我怀疑这意味着渲染等,或者

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


所以,我在寻找建议

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

对任何感兴趣的人来说,休息一下,吃顿饭,就不难弄清楚了。。多态性101和一些.Net魔法

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

现在创建要从MyBaseClass继承的单个控件(myTextBox、myDropDown等)-这些单独的控件类现在是MyBaseClass和CompositeControl类型

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

嗯。。。总的来说,一切如常,只是复合控制