3

は、私は、次のフィールドとジャンルと呼ばれるデータベーステーブルを持っていますASP.NET MVC 3のDropDownListForでのデータバインディングエラー? -</li> </ul> <p></p> <ul> <li>ID(シード主キー)</li> <li>名(などロマンス、西部、...ジャンルの名称):

public class GenreDropDownModel 
{ 
    private StoryDBEntities storyDB = new StoryDBEntities(); 

    public Dictionary<int,string> genres { get; set; } 

    public GenreDropDownModel() 
    { 
     genres = new Dictionary<int,string>(); 

     foreach (var genre in storyDB.Genres) 
     { 
      genres.Add(genre.Id, genre.Name); 
     } 
    } 

} 

マイコントローラーWriteアクションが宣言されている:私はTEH、次のコードが含まれていGenreDropDownModelと呼ばれるモデルクラスを持っていますS:私は次のエラーを取得する場所

public ActionResult Write() 
    { 
     return View(new GenreDropDownModel()); 
    } 

は最後に、私のビューWrite.cshtmlがある:

データバインディング:「System.Collections.Generic.KeyValuePair`2 [[可能System.Int32、mscorlib、バージョン= 4.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089]、[可能System.String、mscorlib、バージョン= 4.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089]]同上 '」名前のプロパティが含まれていません'。

@model Stories.Models.GenreDropDownModel 

@{ 
    ViewBag.Title = "Write"; 
} 

<h2>Write</h2> 

@Html.DropDownListFor(model => model.genres,new SelectList(Model.genres,"Id","Name")) 

答えて

6

Model.genresが辞書ですので、あなたが列挙されたときに、IDictionary<TKey, TValue>KeyValuePair<TKey, TValue>の列挙を生成するので、これは

@Html.DropDownListFor(model => model.genres,new SelectList(Model.genres,"Key","Value")) 

でこれを行う必要があります。これはプロパティの名前付け方法を見るために必要なタイプです。

+0

私が以前から求めていたこの問題のオフに行っていたが、鉱山は動作しません。http://stackoverflow.com/questions/5326515/create-a-dropdown-list-for-mvc3-using-entity-framework- edmx-model-razor-vie – Xaisoft

+0

私はまた、Dictionaryが私がリンクした質問に基づいて渡す​​べき最良のものではないと聞きました。私はまだ最良の方法を見つけていない。 – Xaisoft

+0

偉大な、あなたのソリューションが働いた。助けてくれてありがとう。 – Xaisoft

関連する問題