【发布时间】:2010-10-06 07:31:17
【问题描述】:
你在你的视图中放了什么?
最近来自Scott Hanselman 的blog 关于使用特殊模型绑定器以简化测试,这让我想到了以下几点: 您在构建视图模型的控制器逻辑中放置了什么,应该在视图中放置什么?他的工作是这样的:
var viewModel = new DinnerFormViewModel {
Dinner = dinner,
Countries = new SelectList(PhoneValidator.Countries, dinner.Country)
};
return View(viewModel);
现在,我使用相同的方式将数据传递给我的视图,但我不确定他如何处理 Country 属性。你可以争论双方: 在 SelectList 中包装国家列表可以为视图准备数据,就像您创建视图模型 DTO 来传递数据一样。 另一方面,不知何故,感觉就像您在专门操纵要在下拉列表中使用的数据,从而限制了视图处理来自控制器的数据的方式。 我觉得这在视图和控制器之间的关注点分离上有点灰色地带,我真的无法决定走哪条路。有没有这方面的最佳做法?
PS:为简单起见,我们假设默认的 ASP.NET MVC 上下文,所以基本上是您的开箱即用项目。默认视图引擎和所有爵士乐。
【问题讨论】:
标签: asp.net-mvc separation-of-concerns