0

複数のリスト項目を含む順序付けられていないリストがあり、それぞれにチェックボックスとドロップダウンリストがあります。

チェックされたチェックボックスに対応する各ドロップダウンの選択されたドロップダウン値を取得したい。

int[]checkboxesのコントローラーパラメーターを持つことで、チェックされたチェックボックスに簡単にアクセスできます。これにより、チェックされたすべてのチェックボックスの値が得られます。

さて、これらのチェックボックスの横にあるドロップダウンの選択された値を取得するにはどうすればよいですか。

選択した値をキャプチャしてコントローラーに渡すには、javascript を使用する必要がありますか?

4

1 に答える 1

1

int[]コントローラーだけでなく、より複雑なモデルを操作する必要があります。

public class CheckedListModel
{
    public bool IsChecked { get; set; }

    public int SelectedValue { get; set; }

    public SelectList Items { get; set; }
}

そのようなモデルのリストをレンダリングするサンプル ビュー:

@model CheckedListModel[]

@using (Html.BeginForm())
{
    <ul>
        @for (int i = 0; i < Model.Length; i++)
        {
            <li>
                @Html.CheckBoxFor(m => m[i].IsChecked)
                @Html.DropDownListFor(m => m[i].SelectedValue, Model[i].Items)
            </li>
        }
    </ul>
    <input type="submit" value="Save"/>
}

そしてコントローラー:

    [HttpGet]
    public ActionResult Index()
    {
        return View(new CheckedListModel[]
            {
                //Sample data
                new CheckedListModel{Items = new SelectList(new []
                    {
                        new SelectListItem{Text = "Text 1", Value="1"},
                        new SelectListItem{Text = "Text 2", Value="2"},
                        new SelectListItem{Text = "Text 3", Value="3"},
                    }, "Value", "Text")},
                new CheckedListModel{Items = new SelectList(new []
                    {
                        new SelectListItem{Text = "Text 5", Value="5"},
                        new SelectListItem{Text = "Text 6", Value="6"},
                    }, "Value", "Text")},
            });
    }

    [HttpPost]
    public ActionResult Index(CheckedListModel[] models)
    {
        IEnumerable<CheckedListModel> checkedItems = models.Where(m => m.IsChecked);
        //Rest of the code
    }
于 2013-04-16T20:46:11.097 に答える