私はListであるプロパティを持つモデルを持っています。 MyObjectsには、id、description、および選択されたbooleanプロパティがあります。ASP.Net MVCはチェックボックスのリストから値を返します
私は自分のビューに項目をチェックボックスとして表示することができました。私はこれを介してこれを行いました:
<%foreach (var cat in Model.DefaultCategories)
{%>
<tr>
<td>
<%=cat.Category %>
</td>
<td>
<%=Html.CheckBoxFor(x=>cat.Selected) %>
</td>
</tr>
<%
}%>
</table>
しかし、問題があります。レンダリングされると、それらはすべて同じ名前で終わります。ここに私のリストの一部があります:
<tr>
<td>
Medical
</td>
<td>
<input id="cat_Selected" name="cat.Selected" type="checkbox" value="true" /><input name="cat.Selected" type="hidden" value="false" />
</td>
</tr>
<tr>
<td>
Salary
</td>
<td>
<input checked="checked" id="cat_Selected" name="cat.Selected" type="checkbox" value="true" /><input name="cat.Selected" type="hidden" value="false" />
</td>
</tr>
これらはすべて「cat.Selected」という名前です。
どうすれば解決できますか?
私が提出すると、私はそれらを繰り返し処理する必要があります。別の名前で、私は私が私のHttpPost方法でそれらを得ることができると仮定します。
[HttpPost]
public ActionResult Modify(int id, FormCollection formValues)
{
PayeeDto p = new PayeeDto { Name = Request.Form["name"], PayeeId = id };
Services.PayeeServices.Save(p);
return RedirectToAction("Index");
}
はFormCollectionは異なる名前を持っているのだろうか?現時点では、単一の「cat.selected」アイテムしかありません。
感謝を - あなたは多分Mapper.Mapを説明することができますか?それは面白いね。 – Craig
@cdotlister、[AutoMapper](http://automapper.codeplex.com/)をご覧ください。しかし、これはあなたが使用できる任意のマッピングテクニック(あなたが手作業で書いたものでさえ)かもしれません。コントローラのアクションは、モデルにマッピングしてリポジトリに渡す必要があるパラメータとしてビューモデルを受け取る必要があるという考えがあります。このマッピングがどのように起こるかは、ここで話題とは別です。 –