【问题标题】:Is using ViewBag in MVC bad? [closed]在 MVC 中使用 ViewBag 不好吗? [关闭]
【发布时间】:2011-01-22 03:50:44
【问题描述】:

似乎 mvc 3 团队决定引入一个在控制器和视图之间进行动态数据交换的功能,称为 viewbag,但对于我们都知道的强类型视图来说,这是一件好事吗?与使用强类型视图相比,使用 ViewBag 有哪些积极和消极方面?

【问题讨论】:

  • 是的,ViewBag 坏了。强类型是一种最佳实践,原因有很多(您可以自己研究)。我会非常谨慎地使用 ViewBag。像这样的不良做法的真正问题是因为人们倾向于从一个项目到另一个项目剪切和粘贴代码......所以它最终会像疾病一样感染你的解决方案。为什么不花时间编写好的代码呢?然后,如果开发速度是问题,请使用内部 NuGet 服务器(而不是)共享该代码。

标签: asp.net-mvc asp.net-mvc-3 viewbag


【解决方案1】:

ViewBag 与之前的 ASP.NET MVC 1 和 2 中的 ViewData 相同。它恰好是动态的,而不是像字典一样需要使用它。我认为这根本不会取代强类型视图,事实上你应该尽可能少地使用 Viewdata/Viewbag。尽可能始终使用强类型视图,因为如果您的 Viewdata/Viewbag 中的名称发生更改,这将导致更少的错误,并且不会在所有地方进行 ViewData 强制转换,从而使 HTML 更清晰。

【讨论】:

  • 那微软为什么要创建 ViewBag 呢?
  • @CarstenGehling 它就在那里,所以如果你愿意,你可以选择以一种快速而肮脏的方式做事。有时,业务需要一个快速而肮脏的解决方案,而 MVC 不会尝试为您提出这个要求。这取决于你。
  • 我倾向于说这会将新手带入“不良做法”的世界。
  • 如何使用 viewbag 来保存项目集合以填充下拉列表?我真的不想在我的视图模型中创建该集合,因为我的视图模型只关心选择了什么。想法?
  • @Boone 我总是将项目集合作为视图模型类的一部分。这对我来说更有意义。我还可以编写针对该集合的各种单元测试。在我看来,我唯一一次使用 ViewBag 是ViewBag.Title,仅此而已。在我从事的任何 MVC 项目中,我一方面可以数出我输入 ViewBag 这个词的次数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多