Может ли класс наследоваться как от System.Web.UI.Page, так и от System.Web.UI.UserControl? - PullRequest
0 голосов
/ 29 марта 2012

У меня есть класс, который хранит ViewState в SQL Server (спасибо Адаму Вейгерту за код). Кажется, это работает для моих веб-страниц, но пользовательские элементы управления на странице не вызывают ViewState сохранения, когда они должны. Код, который я получил от Адама, вставляет базовый класс под System.Web.UI.Page. Я думаю, мне нужен этот код, чтобы также наследовать от System.Web.UI.UserControl, чтобы пользовательские элементы управления также запускали этот код, но VS 2010 говорит:

Класс 'SqlViewStatePage' не может иметь несколько базовых классов: 'System.Web.UI.Page' и 'System.Web.UI.UserControl'

Все мои веб-страницы наследуются от BaseWebPage, который теперь наследуется от SqlViewStatePage. Все мои пользовательские элементы управления наследуются от BaseUserControl, который я хочу наследовать от SqlViewStatePage, но это не сработает.

Как я могу это осуществить?

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Сдвиг логики для "Stores ViewState in SQL Server" в новом классе .cs. Получите доступ к этому классу в Управлении и странице

Мы изначально помещаем три файла в нашу архитектуру.

  1. Базовая страница - Этот файл наследует System.Web.UI.Page. Кроме того, мы наследуем Базовую страницу на наших страницах aspx.

  2. Базовый элемент управления - Этот файл наследует System.Web.UI.UserControl. Кроме того, мы наследуем Базовую страницу в наших пользовательских элементах управления.

  3. Базовый класс - Мы пишем общую функциональность статические / нестатические элементы данных / функции-члены

0 голосов
/ 29 марта 2012

Непосредственно не отвечая на ваш вопрос, но я играл с переопределением SavePageStateToPersistenceMedium и LoadPageStateFromPersistenceMedium много лет назад в большом проекте для компании, которая арендовала мозги.Техника была полна проблем, особенно при использовании библиотеки asp.net AJAX, и мы в конечном итоге отказались от этой техники.Частичные обратные передачи не смогли восстановить ViewState.

Так что если по этой причине / как вы храните ViewState в SQL, у вас могут возникнуть проблемы, которые необходимо устранить.

Сохранение Viewstate на сервере

0 голосов
/ 29 марта 2012

В .Net мы не можем использовать множественное наследование, поэтому вы не можете создать класс, который наследует от UserControl и Page одновременно.

Я прочитал немного о SqlViewStateUserControl и похоже, что это было решение для .Net 1.0 и 1.1 .Вы используете VS 2010, тогда вы можете воспользоваться классом PageStatePersister .Унаследуйте этот класс и реализуйте его для сохранения состояния представления в базе данных (этот механизм был введен в .Net 2.0, я уверен, что вы найдете много его реализаций).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...