私のモデルはProduct
どのように私は戻ってEdit
からポストの私のController.Edit(...)
方法でメンバーコレクションと私のProduct
を再構築しないメンバーICollection<ProductOption>
を持っている場合は?MVC編集後にICollectionを再構築しますか?
(我々は唯一のこれまでの編集、我々はオプションを追加したり、削除しないと仮定することができます。)
レイザー:
@model Models.Products.Product
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_GlobalLayout.cshtml";
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
@Html.HiddenFor(model => model.Id)
<legend>Product</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
@foreach (ProductOption option in Model.Options)
{
<div style="border:1px solid black; margin: 5px; padding:5px 7px;">
@Html.Partial("_ProductOptionInput", option)
</div>
}
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
コントローラ:
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
var p = _repository.ById(id);
UpdateModel<Product>(p);
_repository.SaveChanges();
return RedirectToAction("Index");
}
部分図:
@modelModels.Products.ProductOption
@Html.ValidationSummary(true)
<fieldset>
<legend>ProductOption</legend>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.LabelFor(model => model.Term)
</div>
</fieldset>
はUPDATE
マイActionResult Edit(int id, FormCollection collection)
でFormCollection
は、それが更新さProductOption
秒の1ではなく、キー(すなわちProductOption
のプロパティ名)、それらの残りのProductOption
値を持っているので、基本的に辞書であることはできません辞書で繰り返される。