2012-02-23 120 views
0

我試圖簡單地替換生成的詳細信息方法與控制器中的視圖模型。 我知道它應該很簡單,但添加.Find(id)動作時出現錯誤。我猜這是一個語法的東西,或者查找動作不適用於viewModels,但無法找到答案。任何幫助深表感謝。替換生成的詳細信息視圖與視圖模型

所以試圖從這個去:

public ViewResult Details(int id) 
    { 
     Artist artist = db.Artists.Find(id); 
     return View(artist); 
    } 

對此

public ViewResult Details(int id) 
    { 

     var viewModel = new ArtistsDetailsVM(); 
     viewModel.Artists = db.Artists.Find(id); 
     return View(viewModel); 
    } 

編輯:包括視圖模型:

public class ArtistsDetailsVM 
{ 
    public IEnumerable<Artist> Artists { get; set; } 
    public IEnumerable<Album> Albums { get; set; } 
    public IEnumerable<Song> Songs { get; set; } 
} 

回答

0
當你想複合材料的

的ViewModels通常使用一堆來自多個模型,集合,查找列表等的數據轉換爲您c的強類型ViewModel對象視圖中的引用。

所以如果你想在這裏使用ViewModel你有兩個選擇;您可以使用自動映射器(這在這裏是過度殺毒),或者您可以確保您的ArtistsDefailtsVM上的「藝術家」屬性與db.Artists.Find()返回的類型相匹配。

你可以發佈ArtistsDefailtsVM的代碼,以及你的錯誤嗎?看起來好像.Find(id)返回一個Artist,但是你的虛擬機的「Artists」屬性名稱暗示了一個集合。這可能是你錯誤的根源。

+0

感謝您的迴應 - 我將使用viewModel引入一些額外的數據,但希望在第一個實例中直接替換它。我已經編輯了這個問題,以包括viewModel - 從你說的我認爲這個錯誤存在是由於使用IEnumerable的藝術家,因爲.find只適用於一個藝術家。 – jimwinz 2012-02-23 17:29:33

+0

是的 - 從視圖模型中的藝術家刪除IEnumerable工作 - 感謝您的幫助。 – jimwinz 2012-02-23 17:40:25

相關問題