Проблема При Использовании Outputcache В Customcontrol

Работая над проектом на asp.net, я столкнулся с неприятной проблемой при использовании кеша в CustomControl. При использовании этого типа кэширования:



<%@ OutputCache Duration="86400" VaryByParam="MenuID" %> * This source code was highlighted with Source Code Highlighter.

Во время PostBack я получил неверные данные из кеша.

Я очень долго не мог понять, почему так происходит, перерыл кучу кода, а потом подумал, что это может быть баг.

Я поискал в Интернете на различных форумах и нашел решение.

Решение оказалось очень простым — достаточно добавить в элемент управления скрытый ввод:



<%@ OutputCache Duration="86400" VaryByParam="MenuID" %> <input type="hidden" name="MenuID" value="<%= Request.QueryString["MenuID"] ?? "0" %>" /> * This source code was highlighted with Source Code Highlighter.

После этого все заработало как надо.

Не знаю, баг это или фича =) Я надеюсь, что это помогает кому-то.

UPD: VaryByParam — определяет условное кэширование на основе значений строки запроса во время GET или параметров во время POST. Значения необходимо перечислять через точку с запятой.

Похоже, что условное кэширование происходит только на сервере, потому что независимо от значения VaryByParam в http-заголовке Vary равен «*».

VaryByParam – обязателен, если не указан атрибут VaryByControl. VaryByParam может быть равен «none» и тогда условное кэширование параметров не происходит, либо VaryByParam может быть равно «*» и тогда условное кэширование выполняется для всех параметров.

Спасибо XaocCPS Теги: #ASP.NET #outputCache #CustomControl #Chulan

Вместе с данным постом часто просматривают: