我遵循您典型的领域驱动设计层设计。我有:
网站
ApplicationService
领域模型
存储库
但是由于我在视图中使用下拉列表,所以我很困惑如何将SelectListItem集成到这个设计中。注意,下拉列表由数据库中的数据填充。
据我所读,视图模型应该驻留在ApplicationService层中。好的理论,因为Web层只有“表示”,即视图和控制器,因此无需重新设计应用程序就可以很容易地替换。
但是,当视图模型使用SelectListItem (用于下拉列表)时,这是行不通的。SelectListItem需要System.Web.Mvc。我认为ApplicationService层不应该引用System.Web.Mvc。
所以我被卡住了!
要么我给ApplicationService层引用System.Web.Mvc (丑陋的选项)。
或者,我找到了一种在没有SelectListItem的情况下填充下拉列表的方法。
或者,我将View模型移回Web层,这与设计背道而驰。
并在Web层中添加另一个AutoMapper和相关逻辑。
那么,其他人是如何在其多层设计中实现下拉列表逻辑的呢?
发布于 2014-06-11 11:15:07
应用程序服务不应该处理ViewModels。ViewModel是一个表示层的概念(因此而得名)。它包含为显示量身定做的东西,您不希望它泄漏到应用程序空间中。
依赖关系应该始终从外部到内部,因此您的ViewModel应该依赖于应用程序服务公开的任何数据结构,而不是相反。
请参阅Should a service layer return view models for an MVC application?
发布于 2014-06-17 09:38:45
创建一个类DropDownListItem,与SelectListItem相同,即所选属性、文本、值。
视图模型使用DropDownListItem,我以前使用过SelectListItem。
视图将DropDownListItems转换为SelectListItems以供下拉列表使用。
https://stackoverflow.com/questions/24160638
复制相似问题