Храня данные в HttpContext. Текущий. Объекты по сравнению с ViewData

Когда это соответствующий, чтобы хранить данные в HttpContext.Current.Items[...] по сравнению с тем, чтобы хранить данные в ViewData[...]?

Я пытаюсь выяснить лучшие практики для того, чтобы хранить данные в этом наборе, и я не уверен, безопасно ли хранить определенные для пользователя данные в HttpContext.Current.Items.

Один пример использования передает пользовательские кредиты от основного контроллера OnActionExecuting(...) использоваться в Controller вычисления и для дисплея в Views; Я знаю, что должен использовать ViewData для этого, но у меня были некоторые непоследовательные результаты с вложенными частичными представлениями.

Это было бы корректно для высказывания этого HttpContext.Current.Items[...] к Controllers как ViewData[...] к Представлениям?

13
задан Petrus Theron 6 April 2010 в 19:02
поделиться

1 ответ

HttpContext.Current.Items действует только на время запроса, но является глобальным для всего в этом запросе.

Очевидно, что сеанс длится в течение всего сеанса пользователя и сохраняется между запросами.

Вы сможете определить, какой из них вам нужно использовать, основываясь только на этих критериях. Я бы не рекомендовал использовать HttpContext.Current.Items , поскольку он, как правило, является своего рода «глобальной переменной», и, как правило, задействуются строки волшебных ключей, но иногда вам действительно нужно их использовать.

Кроме того, хотя ваше сравнение между .Items и ViewData довольно уместно, .Items отличается от поведения ViewData, потому что каждое View, участвующее в запросе (частичное или иное), получает свою собственную копию ViewData.

Разница в поведении очевидна, когда вы выполняете RenderPartial и пытаетесь добавить что-то в ViewData - когда вы возвращаетесь к родительскому представлению, элемента там нет.

21
ответ дан 1 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: