所以我想在我的网站的几个控件的onclick事件添加一些javascript。它们都是Button, LinkButton和ImageButton类。
我已经创建了一个名为CustomLinkButton的类,它继承了LinkButton,并且工作得很好。它使用了OnLoad方法,并且有一些属性使用了ViewState。太好了。现在我想把这段代码用于Button和ImageButton。
问题是,这三个类都继承自System.Web.UI.WebControls。WebControl,它缺少了这三个控件共有的一些重要的方法和属性。
那么该怎么办呢?在所有类中重复代码意味着较差的可维护性。我试过制作另一个类并在那里编写方法,但我遇到了同样的问题-我不能有一个接受所有三种类型的方法,但我不能编写一个具有多个约束的泛型方法。
想法?或者我只需要用重复的代码编写三个类?我做了大量的搜索,但还是找不到解决办法。这可能适用于很多情况,因此我提出了这个问题。谢谢。
编辑:他们共享的相关属性的例子是CausesValidation和ValidationGroup。
虽然它们具有相似的功能和需求,但它们确实是用于不同目的的不同控件。我建议你把它们分开。只要有足够的时间、精力和测试,你就可以拥有一个渲染任何东西的控件,但这真的是你想要的吗?
你会认为LinkButton
和ImageButton
应该继承Button
,但这只是语义。你应该考虑他们在他们渲染的方面,这是HTML
:
- asp:button是一个
<input type="button">
- asp:linkbutton是
<a>
- asp:imagebutton是一个
<input type="image">