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

模型 – 视图 – 控制器 – ASP.NET MVC:将ViewModels嵌套在彼

发布时间:2020-12-16 07:03:20 所属栏目:asp.Net 来源:网络整理
导读:我有一个项目,其中ViewModels彼此嵌套,这样它们本质上是域层次结构的字符串类型复制.例如,如果我们的域具有以下关系: 组织有1到多个环境 环境有1到多台机器 然后会有一个OrganizationViewModel,其中包含一个或多个EnvironmentViewModel,而EnvironmentViewMo
我有一个项目,其中ViewModels彼此嵌套,这样它们本质上是域层次结构的字符串类型复制.例如,如果我们的域具有以下关系:

组织有1到多个环境

环境有1到多台机器

然后会有一个OrganizationViewModel,其中包含一个或多个EnvironmentViewModel,而EnvironmentViewModel本身就有一个到多个MachineViewModel.然后,在整个应用程序中重用此样式的层次结构,其中包含此类型的大约五个ViewModel之一. (例如,EnvironmentViewModel用于多个页面,MachineViewModel也适用于其中许多页面,具体取决于正在查看的层次结构的级别…我为了讨论的目的简化了这个,但是层次结构比上面的3更大).

现在,尽管我想从上面下来并谴责这种做法,但我还是找不到有关此问题的更多信息.有人能指出我有关既定做法的更多细节吗?轶事分享?

(我自己的偏见是这些ViewModel不应该以这种方式嵌套在彼此之内,并且ViewModel实际上应该对应于Views,而不是域对象.我发现它对于一些可维护性问题非常混乱.但我想要知道别人的想法或经历过.)

I’ve attached this question for reference but it describes nesting a domain object within a viewmodel,not viewmodels within each other.

解决方法

视图模型应尽可能平坦(尽管用于逻辑分组多个相关属性的嵌套不可变对象可用于整理目的).

不要把它想象为“视图模型应该对应于视图”,反过来想一想:“视图是视图模型数据的html表示”.

ViewModel是一个可怕的术语,因为它不是一个视图,它不是一个模型,它是一种资源的表示.

如果我做:

`GET /User/1`

我期待回来一些代表用户1的数据.如果那是HTML格式,因为我发送了

`Accept: text/html`

那就这样吧.考虑一下您的viewmodel看起来像XML或JSON.

在创建依赖关系链时尝试避免嵌套视图模型,只需复制属性,而不是真的违反DRY

(编辑:李大同)

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

    推荐文章
      热点阅读