这是不好的做法,有一个属性类型为另一个ViewModel在ASP.净MVC

本文关键字:另一个 类型 ViewModel MVC ASP 属性 有一个 | 更新日期: 2023-09-27 17:50:13

拥有另一个视图模型的属性的视图模型会被认为是不好的做法吗?如:

public class PersonViewModel
{
     public PersonJobViewModel Peron { get; set;}
     //other properties here...
}

编辑

关于我的特殊情况:

我有一个视图模型,目前包含2个域类。我将这个视图模型传递给一个视图,该视图加载2个部分视图(一个用于视图模型中的每个域类)

因此,我最终将纯领域模型直接传递给部分视图。

我的想法是,我可以为每个域模型做一个视图模型,去局部…然后将这两个封装在另一个viewmodel中传递给父视图。

还是有更好的方法来完成这个?

这是不好的做法,有一个属性类型为另一个ViewModel在ASP.净MVC

不,一点也不坏。这是完美的代码。它允许您在不同的视图之间重用部分视图模型。

我不认为将一个ViewModel聚合到另一个ViewModel中是不好的做法。我可以看到一个优势,比如能够呈现部分视图或使用聚合视图模型的EditorFor

绝对没问题。从概念上讲,视图模型应该用给定视图的相关信息模拟您的领域模型。

请记住,一旦"最佳实践"变得反直觉和反生产力,它们可能不再是给定场景下的最佳实践。最佳实践是指导方针,而不是严格遵守需求。

编辑:改变了我最初的评论,因为我不确定我之前说的是否足够清楚。

Edit2:还要问自己是否需要视图模型。如果它们确实模仿了您的领域模型,那么还有什么意义呢?只要使用你的领域模型(除非你有其他的依赖关系会使它变得丑陋)。

不,您可能有伙伴模型与某些字段,如:

public class Parner
{
  int age {get; set;}
  //etc
} 
public class ParnerList
{
  public List<Partner> ListOfPartner {get; set;}
  public int PageNumber {get; set;}
  public int PageCount {get; set;}
  //etc
}

很容易在View中使用显示列表和分页

相关文章: