【问题标题】:MVC 5 ViewBag securityMVC 5 ViewBag 安全性
【发布时间】:2015-01-16 02:58:54
【问题描述】:

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

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

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

提前致谢。

【问题讨论】:

  • 如果您使用视图模型,那么在视图模型中包含 SelectList 属性是有意义的,但是就“安全性”而言,模型属性和 ViewBag 属性没有区别

标签: security asp.net-mvc-5 viewbag asp.net-mvc-viewmodel asp.net-mvc-views


【解决方案1】:

使用您的视图模型。

在实现 ViewBag (MVC 3) 时,动态类型是新的 (.NET 4.0),它只是作为 ViewData 的一个附带选项或快速生成视图而无需额外的类。

任何严肃的 MVC 项目都会利用具有强类型视图的模型/视图模型。

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

【讨论】:

    【解决方案2】:

    ViewBag 没有安全问题,因为它在视图中呈现后就被释放了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      相关资源
      最近更新 更多