2

Я кодирую интернет-приложение MVC, и у меня есть вопрос относительно использования ViewBag.MVC 5 ViewBag security

Во многих моих контроллерах у меня есть объекты SelectList, где пользователь может выбрать объект. Выбранный объект является значением внешнего ключа для моей модели.

Мой вопрос заключается в следующем: следует ли использовать ViewBag для этого? Насколько безопасен ViewBag? Должен ли я использовать значения в моей ViewModel вместо ViewBag?

Заранее спасибо.

+0

Если вы используете модель представления, то имеет смысл включить ваш 'свойства SelectList' в модели представления, но нет никакой разницы между свойство модели и свойство ViewBag с точки зрения «безопасности», –

ответ

3

Используйте доступную модель.

Когда была реализована функция ViewBag (MVC 3), динамическая типизация была новой (.NET 4.0), и она была помещена как боковая опция в ViewData или для быстрого создания представления без необходимости в дополнительных классах.

Любой серьезный проект MVC будет использовать модель/модель с строго типизированным представлением.

Существует никаких проблем с безопасностью либо потому, что они по существу существуют только через продолжительность жизни контроллеров.

1

У вас нет проблем с безопасностью ViewBag, так как он удален после отображения в поле зрения.

Я думаю, что ответ действительно должен быть "it depends". Например, если у вас есть 6 коллекций, необходимых для заполнения выпадающих списков, и вы хотите, чтобы данные были отправлены назад, для этого вам обязательно нужно использовать ViewModel. Поскольку 6 коллекций будет трудно справиться, если они будут добавлены в ViewBag без сильной типизации в представлении, особенно если другой разработчик придет позже, чтобы сделать техническое обслуживание для представления.

В общем, все должно быть сделано внутри view model. Вот что такое модель представления. Класс, который вы конкретно определяете для соответствия требованиям вашего представления. Вот изображение depecting, когда использовать TempData, ViewBag или ViewData

enter image description here

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