1

私はそのような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を入力します)。それは可能ですか?

エラーはスローされません。最も重要な部分であるデータベースの更新を除いて、すべてが機能しているようです。

4

3 に答える 3

3

@Html.HiddenFor同じアイテムをレンダリングしていないか、類似していることを確認してください。

于 2015-01-27T01:47:44.870 に答える
2

できることは2つあります。

@Html.DropDownList("PlaylistId", (SelectList)ViewBag.chosenId)に変更@Html.DropDownList("chosenPlaylist.PlaylistId", (SelectList)ViewBag.chosenId)

またはを使用しHtml.DropDownListFor(m => m.chosenPlaylist.PlaylistId, (SelectList)ViewBag.chosenId))ます。

于 2012-12-05T12:42:44.033 に答える
0

使用する場合:

@Html.DropDownList("PlaylistId", (SelectList)ViewBag.chosenId)

選択したIDを格納するプロパティ名と同じでないものにPlaylistId選択リストの名前を変更する必要があります。そうしないと、選択済みとしてマークされません。

(これは、入力するときに意味があります。選択した値を、選択リストと同じものに格納することはできません)

基本的に言う:

@Html.DropDownList("MySelectListId", (SelectList)ViewBag.chosenId)

動作します。

詳細については、codeplexでこの問題に関するコメントを参照してください:http ://aspnet.codeplex.com/workitem/4932

于 2012-12-05T13:02:13.043 に答える