#asp.net #viewstate
#asp.net #состояние просмотра
Вопрос:
Вопрос в том … могу ли я сложить несколько PageAdapter (ов) в моем ASP.NET веб-сайт? У меня есть проект, в котором уже применяются собственные классы PageAdapter, но мне нужно добавить один для перемещения viewstate, чтобы он сохранялся на сервере (диск, БД, кэш, что угодно). Я сомневаюсь… Если я создам адаптер страницы для браузера «по умолчанию» (то есть для каждого браузера), и в этом проекте уже есть свои адаптеры для разных браузеров для некоторых вещей, будет ли мой адаптер безупречно работать с ними или одновременно может быть только один адаптер страницы?
Ответ №1:
Адаптеры хранятся в HttpCapabilitiesBase.Adapters
свойстве как Hashtable
. Если вы будете наблюдать за этой коллекцией в debug, вы увидите, что ключом для этого Hashtable
является полное имя типа страницы / элемента управления.
Таким образом, невозможно складывать управляющие адаптеры, всегда есть один адаптер для каждого элемента управления одновременно. И определение браузера по умолчанию всегда выигрывает (конечно, за исключением случаев, когда вы заполняете коллекцию адаптеров страниц вручную).
Комментарии:
1. Спасибо … я думаю, это будет проблемой для меня. Я боюсь, что если я добавлю свой адаптер страницы, я нарушу логику существующих. Что вы имеете в виду под «конечно, за исключением случаев, когда вы заполняете коллекцию адаптеров страниц вручную»?
2. Адаптеры @Manight могут быть зарегистрированы программно, обычно в конструкторе страницы или после
Request
того, как объект доступен. И если ваша задача состоит только в том, чтобы переместить состояние просмотра с клиента на сервер, вы можете использовать технику, описанную в ASP.NET Состояние страницы Сохраняемая статья ( msdn.microsoft.com/en-us/library/aa479403.aspx ).3. Не знал о добавлении базового типа страницы в web.config … хорошее решение, интересно, как это будет взаимодействовать с другим базовым классом страниц, уже унаследованным от pages.
4. Базовый тип страницы будет работать, только если
aspx
не содержитInherits
CodeBehind
CodeFile
атрибутов страницы или .5. Я так и предполагал… Я думаю, мне придется прибегнуть к адаптеру страницы и в конечном итоге изменить уже существующие файлы .browser. Спасибо за вашу помощь