1

ビューには 12 個のチェックボックスがあり、いくつかの項目を選択して送信ボタンを押すと、フォームコレクションには [0] "IsSelected" と [1] "Playlists" の 2 つのキーしかありません。

これが私の見解です。モデルに強く型付けされておらず、部分的なビューです。

@using (Html.BeginForm()) {
<p>Tracks</p>
    foreach (Sem_App.Models.Track track in ViewBag.Tracks)
    {
        @Html.CheckBoxFor(m => track.IsSelected)
        @track.Title
    }
            @Html.DropDownList("Playlists", String.Empty)
            <input type="submit" value="Add To Playlist" />
}

コントローラ

    [HttpPost]
    public ActionResult Search(String criteria, FormCollection collection)
    {

    }

それを修正する方法はありますか?または、更新された ViewBag.Tracks リストをコントローラーに渡すより良い方法はありますか? 各トラックにbool IsSelected Fieldがあるので

4

1 に答える 1

3

チェックボックス フォーム アイテムには、POST ActionResult のリストとして正しく表示される一意の名前/ID プロパティが必要です。私が見たほとんどの例では、インデックス プロパティを使用して、次のように入力要素の名前を割り当てています。

@using (Html.BeginForm()) {
<p>Tracks</p>
    int index = 0;
    foreach (Stackoverflow.Controllers.Track track in ViewBag.Tracks)
    {
        @Html.CheckBox("tracks[" + index + "].IsSelected", track.IsSelected)
        @Html.Hidden("tracks[" + index + "].Title", track.Title)
        @track.Title
        index++;
    }

    @Html.DropDownList("Playlists", String.Empty)
    <input type="submit" value="Add To Playlist" />
}

次に、次のように POST メソッドを通過します。

[HttpPost]
public ActionResult Search(String criteria, string PlayLists, List<Track> tracks)
{

}
于 2012-03-13T00:56:16.307 に答える