今天讓我的頭轉向MVC,並且貫穿了不將模型直接傳遞到視圖的最佳實踐。相反,使用ViewModel。將IEnumerable <Object>傳遞給ViewModel - 對象是否需要ViewModel?
我研究了AutoMapper並計劃使用它將我的ViewModel映射到相應的模型。我知道AutoMapper足夠聰明,可以將IEnumerable映射到IEnumerable而無需單獨映射,只要映射源和目標即可。
但是我對如何處理將ViewModel中的IEnumerable傳遞給我的視圖有點困惑。我目前有我的頁面使用包含IEnumerable的ViewModel工作,但我讀到這與將IEnumerable直接傳遞給視圖一樣糟糕。那麼,我需要一個單獨的ViewModel來保存將在主ViewModel的IEnumerable屬性中使用的對象嗎?
那麼,活動是有問題的型號:
public class ActivityHistoryViewModel
{
public IEnumerable<Activity> activities { get; set; }
}
我需要創建ActivityViewModel和寫我ActivityHistoryViewModel這樣嗎?
public class ActivityHistoryViewModel
{
public IEnumerable<ActivityViewModel> activities { get; set; }
}
有沒有更簡單的方法來做到這一點?
Duh,didn'甚至不考慮傳遞IEnumerable。但我真的想到更大的場景,我需要傳遞更多的數據。 –
2012-02-22 19:52:58
我添加了代碼來代替使用'ActivityHistoryViewModel'。希望它正在尋找什麼。 – 2012-02-22 20:02:04
太棒了,我設法讓一切正常,包括對嵌套實體對象上的屬性的自定義映射。我感謝您的幫助。一旦你想出來,它總是變得容易。 :) – 2012-02-22 20:14:14