ViewModels or ViewBag?



我对MVC4,EF5和 ASP.Net 相当陌生,我似乎无法在任何地方找到好的答案。

基本上,一切都应该通过视图模型完成,还是也可以合并视图包?

假设我有一个填充下拉列表的方法,并且我正在使用视图模型来表示视图的输出。

我可以使用Viewbag.DropDown = PopulateDropdown();还是合并会更好这进入视图模型,通过创建一个属性来保存PopulateDropdown();创建List<SelectListItem>

我知道ViewBag有多方便,但我还没有看到任何不使用它的充分理由?如果有人能给我更多的见解,那就太棒了。

基本上,一切都应该通过视图模型完成还是可以 还要加入Viewbag?

一切都应该在视图模型中完成。这就是视图模型。为满足视图要求而专门定义的类。不要将 ViewBag 与 ViewModel 混用。视图不再清楚信息来自哪里。要么只使用视图模型(我推荐的方法),要么只使用 ViewBags。但不要混合 2.

因此,在您的特定示例中,您的视图模型上将有一个类型为 IENumerable<SelectListItem> 的属性,在您的视图中,您将使用 Html.DropDownListFor 帮助程序的强类型版本绑定到模型:

@Html.DropDownListFor(x => x.ProductId, Model.Products)

显然,这些只是我的2美分。其他人会说混合使用ViewModels和ViewBags很好,我尊重他们的意见。

尽可能更喜欢 ViewModels,而不是 ViewBag。创建强类型视图。它使您的代码更简洁、更不脆弱、更不容易出错且易于维护。

ViewBags只是动态类型对象的字典,因此您将丢失:

  • 编译时检查
  • 充满信心地重构的能力(您将失去工具的支持)
  • IDE 支持 - 例如导航到所有使用实例的能力
  • 智能感知

对于奖励积分,广泛使用ViewBag也错过了使用MVC模式的重点

我的印象是,ViewBags是为了解决 asp.net 中的边缘问题而创建的,人们使用它们而不是像平台设计中最初打算的那样创建视图模型,这损害了他们的工作。


感谢为什么不大量使用ViewBag?

相关内容

  • 没有找到相关文章

最新更新