2016-04-11 2 views
2

Есть ли способ в пользовательском элементе .Net проверить, был ли элемент управления ранее загружен на страницу?Проверьте, загружен ли ранее Usercontrol на странице

Я думал о попытке сохранить переменную в переменной сеанса .Net, чтобы отслеживать каждый элемент управления при его загрузке, а затем удалять переменную в событии предварительной визуализации страницы. Мне кажется, что должен быть лучший способ добиться этого.

Причина, по которой мне нужно сделать это, заключается в том, что пользовательские элементы управления загружаются как подсловы в sitecore, и я не знаю, сколько раз автор контента мог добавить элемент управления на страницу. Если это первый раз, когда элемент управления вызывается на страницу, мне нужно добавить запись тега div для сторонней службы. Если тег div встречается более одного раза, сторонний сервис, gawks.

ответ

5

Просто используйте HttpContext.Current.Items, чтобы сохранить информацию о загруженном контроле.

Как следует из названия, HttpContext.Current предназначен только для одного веб-запроса. Не нужно беспокоиться об утилизации или очистке старых данных.

if (HttpContext.Current.Items["I was here"] == null) 
{ 
    // do custom div magic 
    HttpContext.Current.Items["I was here"] = true; 
} 
+0

Спасибо! Это отлично поработало @Marek –

+1

Но не на 100% надежнее, если вы используете кеширование и персонализацию подъязыка. Если все в порядке, продолжайте –

+1

Полностью согласен с @JanBluemink. Вы должны принять во внимание, что если вы кэшируете вывод этого подзапуска, код не будет выполнен. –

Смежные вопросы