Один из способов может заключаться в том, чтобы скрыть поле со стороны сервера в элементе управления, вставить в него идентификатор клиента пользовательского элемента управления и затем использовать параметр VaryByControl с идентификатором скрытого поля.
Для получения дополнительной информации / параметров см. эту ссылку MSDN , в которой обсуждается та же проблема.
РЕДАКТИРОВАТЬ
Использование Datetime.Now.ToString()
не является хорошей идеей по двум причинам!Если вы увидите фактическое значение для различных элементов управления, вы обнаружите, что оно будет одинаковым, потому что ToString
будет иметь значение до секунд - все ваши экземпляры элемента управления на странице будут иметь почти одинаковое значение даты / времени, вероятно, различающееся в миллисекундахчто даст то же значение ToString()
.
Вторая проблема заключается в том, что DateTime.Now
является недетерминированным.Чтобы кэширование работало, вам необходимо иметь детерминированное значение (значение, которое не изменяется при повторных вызовах) - в противном случае для каждого запроса страницы у вас будет другое значение, которое сделает кэш недействительным.Я предлагаю поставить идентификатор клиента пользовательского элемента управления в качестве значения.Еще одним способом было бы выставить свойство в элементе управления пользователя и установить для него порядковый номер, такой как 1,2,3 .. со страницы.