1

ASP.Net MVC 3 Web アプリケーションを開発していますが、コントローラーの HttpPost メソッド内で選択したチェックボックスの値を取得するのに苦労しています。うまくいけば、誰かが助けてくれるでしょう。

私は2つのViewModelを持っています

public class ViewModelShiftSubSpecialties
{
    public IEnumerable<ViewModelCheckBox> SpecialtyList { get; set; }
}

public class ViewModelCheckBox
{
    public string Id { get; set; }
    public string Name { get; set; }
    public bool Checked { get; set; }
    public string Specialty { get; set; }
}

そして、EditorTemplate として使用する部分ビュー

@model Locum.UI.ViewModels.ViewModelCheckBox

@Html.HiddenFor(x => x.Id)        
@Html.CheckBoxFor(x => x.Checked)
@Html.LabelFor(x => x.Name, Model.Name)<br />

私のビューでは、医学と外科の 2 つの見出しの下にチェックボックスを作成します。

<h3>Medicine</h3>
foreach (var sub in Model.SpecialtyList)
{
if (sub.Specialty.Equals("Medicine"))
 {
    @Html.EditorFor(m => sub)
 }
}
<h3>Surgery</h3>

foreach (var sub in Model.SpecialtyList)
{
if (sub.Specialty.Equals("Surgery"))
 {
    @Html.EditorFor(m => sub)
 }

}

そして、私のHttpPostコントローラーで、選択したチェックボックスの値を取得しようとしましたが、mode.SpecialtyListは常にNullです

 [HttpPost]
    public ActionResult AssignSubSpecialties(ViewModelShiftSubSpecialties model)
    {
        foreach (var item in model.SpecialtyList)
        {
            if (item.Checked)
            {
                //do some logic
            }
        }

        return View();
    }

model.SpecialtyList が常に Null である理由を知っている人はいますか?

どんな助けでも大歓迎です。

ありがとう。

4

1 に答える 1

3

チェックボックスに次のような同じ名前を付けます。

<input type="checkbox" name="ViewModelShiftSubSpecialties.SpecialtyList" .../>

そしてそれは配列を投稿します

于 2012-04-18T18:51:11.460 に答える