2012-02-23 17 views
0

生成されたDetailsメソッドをコントローラ内のviewModelに置き換えようとしています。 シンプルなはずですが、.Find(id)アクションを追加するとエラーが発生します。私はそれが構文のものか、またはFindModelのFindアクションdoesntが動作すると推測していますが、anywereという答えを見つけることはできません。どんな助けでも大歓迎です。生成されたDetailsビューをviewModelに置き換えます。

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); 
    } 

編集するには::ViewModelにを含める:あなたはコンポジットAにしたいとき

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

答えて

0

のviewmodelsは通常使用されているので、これから行くしようとして

複数のモデル、コレクション、ルックアップリストなどから集められたデータを、強く型付けされたViewModelオブジェクトに変換しますビュー内の参照。あなたがここのViewModelを使用したい場合は

は、だから、2つのオプションがあります。オートパーサーを使用することができます(ここでは過剰です)。または、ArtistsDefailtsVMの "Artists"プロパティがdb.Artists.Find()が返すタイプと一致することを確認することができます。

あなたはArtistsDefailtsVMためのコード、およびエラーyour're取得を投稿することができますか? .Find(id)は1つのArtistを返しますが、VMの "Artists"プロパティ名はコレクションを意味します。それがあなたのエラーの原因かもしれません。

+0

応答をありがとう - 私はいくつかの追加データを持ってくるのViewModelを使用することになるだろうが、それは最初のインスタンスでの直接置き換えとして働いて取得したいですよ。私はviewModelを含めるように質問を編集しました。そして、あなたが言ったことは、.findが単一のアーティストとしか動作しないアーティストのためにIEnumerableを使用することによってエラーが存在すると思います。 – jimwinz

+0

Yup - viewModelのアーティストからIEnumerableを削除しました。ありがとうございました。 – jimwinz

関連する問題