LinkButton、ImageButton和Button的基类之间共享方法

本文关键字:基类 之间 共享 方法 Button ImageButton LinkButton | 更新日期: 2023-09-27 18:16:19

所以我想在我的网站的几个控件的onclick事件添加一些javascript。它们都是Button, LinkButton和ImageButton类。

我已经创建了一个名为CustomLinkButton的类,它继承了LinkButton,并且工作得很好。它使用了OnLoad方法,并且有一些属性使用了ViewState。太好了。现在我想把这段代码用于Button和ImageButton。

问题是,这三个类都继承自System.Web.UI.WebControls。WebControl,它缺少了这三个控件共有的一些重要的方法和属性。

那么该怎么办呢?在所有类中重复代码意味着较差的可维护性。我试过制作另一个类并在那里编写方法,但我遇到了同样的问题-我不能有一个接受所有三种类型的方法,但我不能编写一个具有多个约束的泛型方法。

想法?或者我只需要用重复的代码编写三个类?我做了大量的搜索,但还是找不到解决办法。这可能适用于很多情况,因此我提出了这个问题。谢谢。

编辑:他们共享的相关属性的例子是CausesValidation和ValidationGroup。

LinkButton、ImageButton和Button的基类之间共享方法

虽然它们具有相似的功能和需求,但它们确实是用于不同目的的不同控件。我建议你把它们分开。只要有足够的时间、精力和测试,你就可以拥有一个渲染任何东西的控件,但这真的是你想要的吗?

你会认为LinkButtonImageButton应该继承Button,但这只是语义。你应该考虑他们在他们渲染的方面,这是HTML:

  • asp:button是一个<input type="button">
  • asp:linkbutton是<a>
  • asp:imagebutton是一个<input type="image">