2012-02-15 4 views
0

Это мой первый пост здесь.Использование LoadControl для отображения кэшированных WebUserControls

Я написал CMS, который позволяет разработчикам создавать свои собственные плагины в форме WebUserControls. Эти плагины могут быть вставлены (через TinyMCE) в контент пользователями. Это делается программно, используя метод LoadControl, добавляя к иерархии элементов управления и устанавливая его свойства. Все хорошо до сих пор.

Я хочу разрешить разработчикам использовать OutputCache в своих WebUserControls, однако эти элементы управления необходимо кэшировать по свойствам WebUserControl. например разработчик написал WebUserControl color.ascx, который имеет свойство Color (Red | Green | Blue), поэтому в зависимости от значения этого свойства кеш может хранить красную, зеленую и голубую версии.

Проблема, что у меня есть то, что на странице может быть более одного, скажем, три элемента управления цветом.ascx (красный, зеленый и синий), динамически загружаемый с помощью LoadControl. После кэширования метод LoadControl корректно возвращает PartialCachingControl, но при обновлении страницы он всегда является последней версией из кеша, то есть на странице отображается 3 Blue вместо красного, зеленого и синего.

Есть ли способ загрузить LoadControl (или каким-либо другим способом) для загрузки правильной версии из кеша, то есть с использованием свойства Color, и как использовать OutputCache для обеспечения его сохранения в кеше на основе WebUserControls свойства?

Благодарим за помощь.

ответ

0

Кажется, у вас есть классическая проблема кэширования LoadControl. Вызывается из одного и того же места (например, для каждого цикла) в вашей программе, для того же элемента управления эта функция всегда возвращает тот же экземпляр, если требуется кеш. Чтобы избежать этого, в вашем случае просто сделайте 3 разных вызова - 3 разных строки кода в вашей заявке

+0

К сожалению, я был далеко в течение нескольких дней. Спасибо за ваш комментарий, но это не имеет для меня никакого смысла. Я не думаю, что вы поняли мой вопрос. У вас есть ссылка, объясняющая, что вы имеете в виду? – KowDot

+1

Я использовал это в своем приложении: [LoadControl] (http://devnet.kentico.com/Blogs/Martin-Hejtmanek/April-2009/How-to-dynamically-load-partially-cached-controls.aspx) –