我对MVC4,EF5和ASP.Net相当陌生,而且似乎无法在任何地方找到好的答案。
基本上,是否应该通过 View 模型完成所有操作,或者也可以合并 View 包?
假设我有一个填充下拉列表的方法,并且我正在使用viewmodel表示 View 的输出。
我可以使用Viewbag.DropDown = PopulateDropdown();
还是最好合并一下
通过创建一个属性来保存List<SelectListItem>
创建的PopulateDropdown();
,将其添加到ViewModel中?
我知道ViewBag有多方便,但是我还没有看到不使用它的确凿理由吗?如果有人还可以为我提供更多的见解,那将是很棒的。
最佳答案
一切都应在 View 模型内完成。这就是 View 模型。您为满足 View 要求而专门定义的类。不要将ViewBags与ViewModels混合使用。对于该 View ,信息从何而来不再是很清楚。要么仅使用 View 模型(我建议的方法),要么仅使用ViewBags。但不要混用2。
因此,在您的特定示例中,您将在 View 模型上具有IENumerable<SelectListItem>
类型的属性,并且在 View 内部,您将使用Html.DropDownListFor的强类型版本绑定(bind)到模型:
@Html.DropDownListFor(x => x.ProductId, Model.Products)
显然,这些只是我的2美分。其他人会说混合使用ViewModels和ViewBags很好,我尊重他们的意见。
关于asp.net-mvc-4 - ViewModels或ViewBag?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13779294/