加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:04:19 所属栏目:asp.Net 来源:网络整理
导读:你在看什么呢? 最近blog从Scott Hanselman关于使用特殊的模型粘合剂更容易测试导致我想到以下: 你在控制器逻辑中建立视图模型是什么,应该在视图中放置什么?他所做的是这样的: var viewModel = new DinnerFormViewModel { Dinner = dinner,Countries = ne
你在看什么呢?

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

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

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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读