私のMVC4プロジェクトビューでは、IEnumerable<Settings>
モデルをビューに渡しています。フォームをコントローラーに送信すると、コントローラーメソッドのパラメーターはIEnumerable<Settings> data
. 問題は、それdata
が常に null であることです。
意見
@model IEnumerable<Settings>
@using (Html.BeginForm("Index", "Layout", FormMethod.Post)))
{
@foreach (var item in Model)
{
@Html.CheckBoxFor(modelItem => item.IsActive, new { @value = item.Id })
@Html.DisplayFor(modelItem => item.Name)
}
<input type="submit" value="Save" />
}
コントローラ
[HttpPost]
public ActionResult Index(IEnumerable<Settings> data)
{
--actual code goes here
}
モデル
[Serializable]
public class Settings
{
public virtual byte Id { get; set; }
public virtual string Name { get; set; }
public virtual bool IsActive { get; set; }
public virtual DataTable DataResult { get; set; }
public virtual int CreatedBy { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual int ClientId { get; set; }
public virtual Int16 NoofItems { get; set; }
}
更新: *レンダリングされた HTML *
<td>
<input checked="checked" data-val="true" data-val-required="The IsActive field is required." id="item_IsActive" name="item.IsActive" type="checkbox" value="13" class="valid"><input name="item.IsActive" type="hidden" value="false">
# of pieces
</td>
Update1: Andrei の回答に従って HTML をレンダリング
<td>
<input checked="checked" data-val="true" data-val-required="The IsActive field is required." name="[0].IsActive" type="checkbox" value="13"><input name="[0].IsActive" type="hidden" value="false">
# of pieces</td>