我可以创建一个抽象基类UserControl,这样派生的.ascx必须实现某些控件吗?

时间:2012-03-08 15:12:03

标签: c# asp.net inheritance user-controls

我的情况是我有一个控件可以处理两种不同的类型。所以在我有if(controlType == "Type1") ... else...的一些方法中,我想把它分成两个不同的控件,它们有一个基类来处理两个控件的常见操作。两个控件都具有相同的标记,所以我想处理基类中的控件事件,但设计师似乎为我搞砸了。我几乎觉得通用.ascx会很完美,但我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

在过去,我尝试过各种继承和用户控件,包括一个继承自另一个ascx的ascx,并且回想起来它不值得麻烦,因为它的维护往往是一点点头痛。

有两个从公共基类继承的ascx控件运行正常,但我也发现尝试处理基类中的事件变得困难。最后我只是从事件中调用了基类中的方法。你必须处理两个控件中的事件,但至少人们可以在2年后遵循代码。

Generic ascx非常棒,很可能:

但是这是一个聪明的解决方法,因为EDI不直接支持它,我怀疑它最终会增加维护问题。

我知道这可能不是您正在寻找的答案,但拥有丑陋的if(controlType == "Type1")代码虽然感觉不雅,但最终可能最容易维护,因为Visual Studio本身并不支持继承用户控件。

祝你好运,如果你找到一个优雅的解决方案,请告诉我!