ASP .NET MVCを初めて使用しています。私の問題は - コントローラの処理できるようにアイテムのコレクションを「POST」したいです。 私のモデルはのコレクションです - 私のコントローラは、次のように定義されてASP.NET MVC-5でチェックボックスの選択項目のリストが常にnullとして投稿される理由
public class CheckedRentalProperty
{
public bool IsSelected { get; set; }
public int Id { get; set; }
public String Address { get; set; }
}
-
public class RentalPropertiesController : Controller
{
public ActionResult Index()
{
List<CheckedRentalProperty> checkHsList = new List<CheckedRentalProperty>();
// Fill the list
return View(checkHsList);
}
[HttpPost]
public ActionResult Save(IEnumerable<CheckedRentalProperty> checkHsList)
{
// why checkHsList is coming as null ??
}
}
そしてビューは、このようなものです -
@model IEnumerable<XXX.Models.CheckedRentalProperty>
@using (Html.BeginForm("Save", "RentalProperties", FormMethod.Post))
{
<div class="form-horizontal">
<div class="form-group">
<table class="table">
<tr>
<th>
</th>
<th>
@Html.DisplayNameFor(model => model.Address)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@Html.CheckBoxFor(modelItem => item.IsSelected)</td>
<td>
@Html.DisplayFor(modelItem => item.Address)
</td>
</tr>
}
</table>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
私の予想だった - 私が打ったとき「保存」ボタンをクリックすると、IEnumerable<CheckedRentalProperty>
というモデルのモデルがコントローラのSave()
アクションに渡されます。しかし、渡されたパラメータは常に「null」であることがわかります。私は何が欠けていますか?
この質問は重複していません。オレルの答えを読んで、違いをチェックしてください – user1748546
それは重複しています。あなたのコードがうまくいかない理由と 'for'ループか' EditorTemplate'を使ってそれを解決する方法を正確に説明しているので注意深く読んでください(そして、Orelの答えはちょうど重複しているものを繰り返すだけです!)そしてOrelの答え_IEnumerableのようなナンセンスが含まれていませんあなたはそれほどフレンドリーではありません。これは間違っているだけで、既存のものをラップする別のビューモデルを作成する必要は全くありません –