2011-01-18 12 views
2

私のモデルは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値を持っているので、基本的に辞書であることはできません辞書で繰り返される。

答えて

1

私はかみそりビューに次のように追加され、それが魔法のように動作します!

@Html.EditorFor(model => model.Options.ToList()[0], templateName: "ProductOptionInput", htmlFieldName: "Options[0]") 
@Html.EditorFor(model => model.Options.ToList()[1], templateName: "ProductOptionInput", htmlFieldName: "Options[1]") 
1

モデルバインダー(ICollection<ProductOption>または新しいインスタンスのインスタンス化ではなくエンティティをデータベースから取り出すモデルバインダー)を作成するか、モデルをパラメータとして使用することはできません。あなたの行動方法でそれをデータベースから取り出してから、TryUpdateModelをコントローラから呼び出します。

HTH

関連する問題