2012-03-17 7 views
1

私の問題は、2つのHtml.RenderActionでビューをレンダリングしようとするときです。 「DbContextが破棄されたため、操作を完了できません」と表示されます。Html.RenderAction with EntityFramework

私はNinjectはこのように構成されています:

Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope; 

をしかし、私は...

Bind<IUnitOfWork>().To<UnitOfWork>() 

デフォルトの方法で行う場合にはエラーはありません。

私はRequestScopeでそれを扱う必要があります(だから私は思っています)。どうすればいいですか? 2番目のHtml.RenderActionが以前のDbContextと呼ばれていると、それが破棄されたようです。

更新日:

これは

@model FoodAway.Model.Product 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>Producto</legend> 
    @using (Html.BeginForm()) 
    { 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Name) 
      @Html.ValidationMessageFor(model => model.Name) 
     </div> 
     @Html.HiddenFor(model => model.Id) 
     <p> 
      <input type="submit" value="Guardar" /> 
     </p> 
    } 
    <fieldset> 
     <div class="editor-label"> 
      @Html.LabelFor(model => model.Ingredients) 
     </div> 
     <div class="editor-field"> 
      @{Html.RenderAction("IngredientsToRemoveList", "Ingredients");} 
     </div> 
    </fieldset> 
    <fieldset> 
     @{Html.RenderAction("IngredientsToAddList", "Ingredients");} 
    </fieldset> 
</fieldset> 

と彼のコントローラ/アクションを(簡潔にするために要約)メインビューでは:私が持っているとき

public ActionResult EditProduct(string name) 
    { 
     Product product = unitOfWork.ProductRepository.Get(i => i.Name ==name).FirstOrDefault(); 
     if (product == null) 
      return HttpNotFound(); 
     return View(product); 
    } 

ので、DBContextに誤りがありますこの2つのRenderActionメソッド、私は唯一のRenderActionを持っている場合は奇妙なことは問題がない!!!!!

+0

解決方法はありますか?私も同じ問題に直面しています。 –

答えて

0

ビューをビューに渡す前に、その列挙を列挙する必要があります。つまり、DbContextの有効なスコープ内でデータベースにクエリを実行します。

コントローラで.ToArray()を使用してこれを行うことができます。

+0

しかし、2つのそれぞれのアクションメソッドの中でRenderActionの呼び出しの後にデータを取得します。両方の呼び出しには独自のデータがあります – Tekno