asp.net-mvc – 在您的ViewModel中放置什么

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在您的ViewModel中放置什么前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
你在看什么呢?

最近blogScott Hanselman关于使用特殊的模型粘合剂更容易测试导致我想到以下:
你在控制器逻辑中建立视图模型是什么,应该在视图中放置什么?他所做的是这样的:

var viewmodel = new DinnerFormviewmodel {  
    Dinner = dinner,Countries = new SelectList(PhoneValidator.Countries,dinner.Country)  
};  
return View(viewmodel);

现在,我用同样的方式将数据传递给我,但我不确定他如何处理国家财产.你可以争辩双方:
在SelectList中包装国家列表准备视图的数据,就像您创建一个视图模型DTO来传递数据一样.
另一方面,它以某种方式感觉像是专门操纵在下拉列表中使用的数据,限制了视图处理您的控制器数据的方式.
我觉得这是一个灰色的区域,分离了观点和控制者之间的关切,我不能真正地决定要走哪条路.有没有最佳做法?

PS:为了保持简单,让我们假设默认的ASP.NET MVC上下文,所以基本上你的开箱即用项目.默认视图引擎和所有爵士乐.

@H_403_14@

解决方法

在MVC中(至少是这种风格),控制器的一个职责就是为视图准备数据.所以我认为为视图消耗准备一个特定的模型是完全可以接受的,这意味着它将被用在一个下拉列表中.在这种情况下,控制器只是使视图更容易,实际上可以防止尴尬的代码不得不涓流地进入视图.它也使得一个在VDataData [“Countries”]中的ViewData中没有这些魔术字符串.

所以总结一下,尽管在责任方面似乎有一些灰色的区域,但最终这是控制器的工作:与视图进行交互,并将域模型转换为更容易消费的其他模型视图.

@H_403_14@ @H_403_14@

猜你在找的asp.Net相关文章