2011-11-30 75 views
1

所以我想在我的網站上的幾個控件的onclick事件中添加一些javascript。它們都是Button,LinkBut​​ton和ImageButton類。在LinkBut​​ton,ImageButton和Button的基類之間共享方法

我創建了一個名爲CustomLinkBut​​ton的類,該類繼承自LinkBut​​ton,並且完美地工作。它使用OnLoad方法並具有一些使用ViewState的屬性。大。現在我想爲Button和ImageButton使用該代碼。

問題是,所有這三個類繼承自System.Web.UI.WebControls.WebControl,它缺少一些重要的方法和所有這三個控件的共同屬性。

那該怎麼辦?在所有類中重複代碼意味着較差的可維護性。我試着製作另一個類,並在那裏編寫方法,但我遇到了同樣的問題 - 我不能接受所有三種類型的方法,但我不能用一個以上的約束編寫泛型方法。

想法?或者我只需要編寫三個重複代碼的類?我做了很多搜索,找不到解決方案。這可能適用於很多情況,因此我的問題。多謝你們。

編輯:它們共享的相關屬性的示例是CausesValidation和ValidationGroup。

回答

1

雖然他們共享類似的功能和需求,但他們確實是出於不同目的的不同控制。我建議你讓他們分開。有了足夠的時間,精力和測試,你可以擁有一個可以渲染任何東西的控件,但是這真的是你想要的嗎?

你會認爲LinkButtonImageButton應該從Button繼承,但這只是語義。你應該想想他們來講他們提供什麼,這是HTML

  • ASP:按鈕是一個<input type="button">
  • ASP:LinkBut​​ton的是<a>
  • ASP:ImageButton的是<input type="image">
+0

這是有道理的。基本上,我可以找出一些東西,但不值得付出努力。我會採取的。感謝您的意見。 –