MVC 5 ViewBag 安全

MVC 5 ViewBag security

我正在编写一个 MVC 互联网应用程序,我有一个关于使用 ViewBag 的问题。

在我的许多控制器中,我都有 SelectList 对象,用户可以在其中 select 一个对象。 selected 的对象是我的模型的外键值。

我的问题是:我应该为此使用 ViewBag 吗? ViewBag 的安全性如何?我应该在我的 ViewModel 中使用值而不是 ViewBag 吗?

提前致谢。

使用您的视图模型。

当 ViewBag 被实现时 (MVC 3) 动态类型是新的 (.NET 4.0) 并且它只是作为 ViewData 的一个侧面选项或用于快速生成视图而不需要额外的 类.

任何严肃的 MVC 项目都会利用 model/viewmodel 和强类型视图。

两者都没有安全问题,因为它们基本上只存在于控制器的生命周期内。

ViewBag 没有安全问题,因为它在视图中呈现后即被处置。

我觉得答案确实应该是"it depends"。例如,如果您需要 6 个集合来填充下拉列表 a,并且您希望获得回传的数据,那么您绝对应该为此使用 ViewModel。因为 6 个集合如果塞在 ViewBag 中而视图中没有强类型,将很难管理,特别是如果稍后出现另一个开发人员需要对视图进行维护。

一般来说,所有事情都应该在 view model 内完成。这就是视图模型。您专门定义以满足视图要求的 class。这是一张图片,说明何时使用 TempDataViewBagViewData