簡體   English   中英

在ASP.NET MVC中使用類型為另一個ViewModel的屬性的ViewModel是不好的做法

[英]Is it bad practice to have a ViewModel with a property typed as another ViewModel in ASP.NET MVC

擁有一個具有另一個視圖模型屬性的視圖模型會被認為是不好的做法嗎?...如:

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

編輯

更多關於我的特殊情況:

我有一個視圖模型,目前包含2個域類。 我將此viewmodel傳遞給一個加載2個局部視圖的視圖(一個用於viewmodel中的每個域類)

因此,我最終將純域模型直接傳遞到局部視圖中。

我的想法是,我可以為每個域模型創建一個視圖模型,然后將這些2包裝到另一個傳遞給我父模型的視圖模型中...

或者有更好的方法來實現這一目標嗎?

不,它一點都不差。 這是完美的代碼。 它允許您在不同視圖之間重用部分視圖模型。

我不認為我認為將一個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 for show list和paging中使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM