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 />
私のビューでは、MedicineとSurgeryの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である理由を誰かが知っていますか?
どんな助けでも大歓迎です。
ありがとう。
回答:
回答№1の場合は3チェックボックスに次のような同じ名前を付けます。
<input type="checkbox" name="ViewModelShiftSubSpecialties.SpecialtyList" .../>
そしてそれは配列を投稿します