我的情况是我有一个控件可以处理两种不同的类型。所以在我有if(controlType == "Type1")
...
else...
的一些方法中,我想把它分成两个不同的控件,它们有一个基类来处理两个控件的常见操作。两个控件都具有相同的标记,所以我想处理基类中的控件事件,但设计师似乎为我搞砸了。我几乎觉得通用.ascx会很完美,但我不知道从哪里开始。
答案 0 :(得分:1)
在过去,我尝试过各种继承和用户控件,包括一个继承自另一个ascx的ascx,并且回想起来它不值得麻烦,因为它的维护往往是一点点头痛。
有两个从公共基类继承的ascx控件运行正常,但我也发现尝试处理基类中的事件变得困难。最后我只是从事件中调用了基类中的方法。你必须处理两个控件中的事件,但至少人们可以在2年后遵循代码。
Generic ascx非常棒,很可能:
但是这是一个聪明的解决方法,因为EDI不直接支持它,我怀疑它最终会增加维护问题。
我知道这可能不是您正在寻找的答案,但拥有丑陋的if(controlType == "Type1")
代码虽然感觉不雅,但最终可能最容易维护,因为Visual Studio本身并不支持继承用户控件。
祝你好运,如果你找到一个优雅的解决方案,请告诉我!