首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多层设计中的MVC SelectListItem

问多层设计中的MVC SelectListItem
EN

Stack Overflow用户
提问于 2014-06-11 10:30:23
回答 2查看 556关注 0票数 0

我遵循您典型的领域驱动设计层设计。我有:

网站

  • 包含视图和控制器。

ApplicationService

  • 应用程序的外观,即服务
  • 包含视图模型
  • AutoMapper

领域模型

  • BLL

存储库

  • 持久性逻辑

但是由于我在视图中使用下拉列表,所以我很困惑如何将SelectListItem集成到这个设计中。注意,下拉列表由数据库中的数据填充。

据我所读,视图模型应该驻留在ApplicationService层中。好的理论,因为Web层只有“表示”,即视图和控制器,因此无需重新设计应用程序就可以很容易地替换。

但是,当视图模型使用SelectListItem (用于下拉列表)时,这是行不通的。SelectListItem需要System.Web.Mvc。我认为ApplicationService层不应该引用System.Web.Mvc。

所以我被卡住了!

要么我给ApplicationService层引用System.Web.Mvc (丑陋的选项)。

或者,我找到了一种在没有SelectListItem的情况下填充下拉列表的方法。

或者,我将View模型移回Web层,这与设计背道而驰。

并在Web层中添加另一个AutoMapper和相关逻辑。

那么,其他人是如何在其多层设计中实现下拉列表逻辑的呢?

EN

回答 2

Stack Overflow用户

发布于 2014-06-11 11:15:07

应用程序服务不应该处理ViewModels。ViewModel是一个表示层的概念(因此而得名)。它包含为显示量身定做的东西,您不希望它泄漏到应用程序空间中。

依赖关系应该始终从外部到内部,因此您的ViewModel应该依赖于应用程序服务公开的任何数据结构,而不是相反。

请参阅Should a service layer return view models for an MVC application?

票数 1
EN

Stack Overflow用户

发布于 2014-06-17 09:38:45

创建一个类DropDownListItem,与SelectListItem相同,即所选属性、文本、值。

视图模型使用DropDownListItem,我以前使用过SelectListItem。

视图将DropDownListItems转换为SelectListItems以供下拉列表使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24160638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档