一个类可以继承System.Web.UI.Page和System.Web.UI.UserControl吗?

时间:2012-03-28 21:03:19

标签: c# asp.net c#-4.0 multiple-inheritance

我有一个在SQL Server中存储ViewState的类(感谢Adam Weigert的代码)。它似乎适用于我的网页,但页面中的用户控件不会导致ViewState保存。我从Adam获得的代码在System.Web.UI.Page下面插入了一个基类。我想我还需要从System.Web.UI.UserControl继承此代码,以便用户控件也会触发此代码,但VS 2010说:

  

类'SqlViewStatePage'不能有多个基类:   'System.Web.UI.Page'和'System.Web.UI.UserControl'

我的所有网页都继承自BaseWebPage,现在继承自SqlViewStatePage。我的所有用户控件都从BaseUserControl继承,我想继承自SqlViewStatePage,但这不起作用。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

在新的.cs类中移动“Stores ViewState in SQL Server”的逻辑。在Control和page

中访问此类
  

我们在我们的架构中纳入了三个文件。

     
      
  1. 基页 - 此文件继承System.Web.UI.Page。此外,我们在aspx页面中继承了Base Page。

  2.   
  3. 基本控制 - 此文件继承System.Web.UI.UserControl。此外,我们在用户控件中继承了基页。

  4.   
  5. 基类 - 我们编写常用功能静态/非静态数据成员/成员函数

  6.   

答案 1 :(得分:0)

在.Net中,我们不能使用多重继承,因此您无法构建一个同时继承UserControl和Page的类。

我读了一些关于 SqlViewStateUserControl 的内容,似乎这是 .Net 1.0和1.1 的解决方案。您正在使用VS 2010,您可以通过PageStatePersister课程受益。继承这个类并实现它以将视图状态保存到数据库(这个机制是用.Net 2.0引入的,我相信你会发现它的很多实现)。

答案 2 :(得分:0)

没有直接解决你的问题,但几年前我曾在一个大型项目中为一家租用crains的公司重写了SavePageStateToPersistenceMedium和LoadPageStateFromPersistenceMedium。该技术充满了问题,特别是在使用asp.net AJAX库时,我们最终放弃了这项技术。部分回发无法恢复ViewState。

因此,如果这就是您将ViewState存储到SQL的原因/方式,那么您可能会遇到需要克服的问题。

Saving Viewstate on Server