我对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/

10-13 01:09