私はそのような2つのモデルクラスを持っています:
プログラム:
public class Program
{
public int ProgramId { get; set; }
public string Name { get; set; }
public virtual Playlist chosenPlaylist { get; set; }
public virtual IList<Playlist> Playlists { get; set; }
}
public class Playlist
{
public int PlaylistId { get; set; }
public string Name { get; set; }
public int NumberVotes { get; set; }
public virtual IList<Song> Songs { get; set; }
}
chosenPlaylist
[プログラムの編集]ビューで、ユーザーが何も選択できないように、または1つを選択できるように更新したいと思いProgram
ますPlaylist
。
例えば:
プログラム1:
- プレイリスト1
- プレイリスト2
選択したプレイリスト:プレイリスト1
したがって、ユーザーは編集して[なし](プレイリストなし)、1(何も変更しない)、または2を選択でき、データベースに保存されます。
コントローラでドロップダウンリストを作成しようとしましたが、更新されません。
GETEditとPOSTEditの両方にあるものはActionResult
次のとおりです。
ViewBag.chosenId = new SelectList(program.Playlists, "PlaylistId",
"Name", program.chosenPlaylist.PlaylistId);
そして私の見解では:
@Html.DropDownList("PlaylistId", (SelectList)ViewBag.chosenId)
これにより、リストが正しく表示され、選択したプレイリストがある場合は事前に選択されます(ない場合は、デフォルトで最初のプレイリストになるようにコードを記述します)。プログラムにプレイリストがない場合は、簡単に制御できます。
ただし、問題:
- モデルを更新しません。たとえば、プレイリスト2が選択されていて、P1を選択した場合、POSTイベントの後も引き続きP2が表示されます。
- ドロップダウンリストに値を選択しないオプションを含めたい(したがって、そのフィールドにNULLを入力します)。それは可能ですか?
エラーはスローされません。最も重要な部分であるデータベースの更新を除いて、すべてが機能しているようです。