Как кэшировать отдельные экземпляры пользовательского контроля в зависимости от значения свойства - PullRequest
1 голос
/ 10 октября 2009

У меня есть пользовательский элемент управления asp.net с именем UC_Test, для которого открыто публичное свойство param1.Он размещен на страницах aspx A и B.

На странице A параметр 1 установлен на 10, а на странице B параметр 1 установлен на 20. В зависимости от значения параметра форматирование пользовательского элемента управления контролируется.

Я хочу, чтобы страница A и страница B кэшировались отдельно от пользовательских элементов управления.

Как указало okw, я хочу использовать кэширование для повышения производительности, а не для сохранения значений. Пожалуйста, дайте мне знать, как мне этого добиться.

Могу ли я использовать Shared = false для этой цели? Например?

Спасибо за чтение.

Ответы [ 3 ]

1 голос
/ 11 октября 2009

Звучит как идеальный кандидат для директивы кэша вывода VaryByCustom. Вы можете просто использовать значение вашего свойства, чтобы определить разницу между кэшированными версиями.

См. MSDN для получения полной информации: http://msdn.microsoft.com/en-us/library/ms550239.aspx

0 голосов
/ 10 октября 2009

Вы можете сделать что-то вроде:

public int MyProperty
{
    get
    {
        return (int)ViewState[this.UniqueID + "_MyProperty"];
    }

    set
    {
        ViewState[this.UniqueID + "_MyProperty"] = value;
    }
}

ViewState в этом сценарии взаимозаменяем с HttpContext.Current.Cache или HttpContext.Current.Session. Вам просто нужно проверить наличие нулей или чего-либо еще.

Надеюсь, это поможет.

0 голосов
/ 10 октября 2009

Самый простой способ - использовать HiddenField, который содержит соответствующее значение. Прочтите его со страницы во время отправки формы или обратного вызова.

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