2016-10-17 10 views
0

私はドロップダウンリストを作成しています。リストは正しく挿入されますが、編集中のページに一致する項目は選択されません。 このページでは、説教記録を編集中です。説教モデルには、それが属するシリーズのIDがあります。私は、説教の記録にあるseries_idと、ドロップダウンリストに一致するものが両方とも "1"であることを確認しました。私は `model.sermon.Series_ID 'をデバッグし、それが" 1 "であることを確認し、ChromeでInspectを使用して、ドロップダウンリストの項目の1つに" 1 "があることを確認しました。Razor HTMLドロップダウンリストヘルパーが一致する値を選択していません

ドロップダウンリストで一致するシリーズが選択されていない理由を教えていただけますか?一致する番号 が存在しても、「選択された」属性は生成されません。

ビュー

@model SermonLibraryManager.ViewModels.ViewModel 

@Html.DropDownListFor(model => model.sermon.Series_ID, new SelectList(Model.seriesList, "Series_ID", "Series_Title"), "-- Select --") 

のViewModel

namespace SermonLibraryManager.ViewModels 
{ 
    public class ViewModel 
    { 
     public SermonModel sermon; 
     public List<SermonModel> sermonList; 
     public SeriesModel series; 
     public List<SeriesModel> seriesList; 
    } 
} 

SermonModel

public class SermonModel 
{ 
    public int Sermon_ID { get; set; } 
    public string Series_Title { get; set; } 
    public int Series_ID { get; set; } 
    public string Sermon_Title { get; set; } 
    public DateTime Sermon_Date { get; set; } 
    public string Nickname { get; set; } 
    public string Last_Name { get; set; } 
    public string Topic { get; set; } 
    public string Description { get; set; } 
    public string UStream_ID { get; set; } 
    public string Vimeo_ID { get; set; } 
    public int? Main_Speaker { get; set; } 
} 

SeriesModel

public class SeriesModel 
{ 
    public int Series_ID { get; set; } 
    public string Series_Title { get; set; } 
} 
+0

生成されたHTMLを含めてください。 –

+2

簡単な方法は、 '{get;セット; } 'を' ViewModel'クラスに追加します。 –

答えて

3

@Stephen Mueckeとの非常に良い議論の末、私は他のユーザーが混乱するのを避けるために答えを編集しています。

問題は、ビューモデルがプロパティの代わりにパブリックフィールドを使用しており、モデルバインディングがフィールドで機能しないため、実際にはHtml.DropDownList()ヘルパーメソッドを使用する場合と同じで、このメソッドは選択リスト内の選択された値

あなたのフィールドは、あなたのビューモデルのプロパティに変換する場合:

public class ViewModel 
{ 
    public SermonModel sermon { get; set; } 
    public List<SermonModel> sermonList { get; set; } 
    public SeriesModel series { get; set; } 
    public List<SeriesModel> seriesList { get; set; } 
} 

あなたがする必要がある唯一のものは、結合Html.DropDownListFor()方法やモデルがあなたのためにすべての世話をする呼び出すことです:

@Html.DropDownListFor(model => model.sermon.Series_ID, new SelectList(Model.seriesList, "Series_ID", "Series_Title"), "-- Select --") 

もう1つの良いアドバイスは、ビューモデルでデータモデルを使用することはないため、ビューモデルにIEnumerable<SelectListItem>があり、ビュー内にドロップダウンが生成されるようにすることをお勧めします。

本当の問題を指摘してくれた@Stephen Mueckeに感謝します。

希望すると便利です。

+0

それはそれでした!シンプルなnoob間違い。ありがとうございました! – Kenny

+0

ようこそ。喜んで助けてください。 –

+1

別のプロパティを追加することは適切な解決策ではありません。 getter-setterの追加はです。 –

関連する問題