[英]Html.RenderAction in MVC with EntityFramework
我的问题是当我尝试使用两个Html.RenderAction渲染视图时。 它说:“该操作无法完成,因为已经处理了DbContext”。
我以这种方式配置了Ninject:
Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope;
但是如果我采用默认方式...
Bind<IUnitOfWork>().To<UnitOfWork>()
没有错误。
我必须在RequestScope中使用它(我认为),但是我该怎么做呢? 似乎当第二个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方法时,奇怪的是,如果我只有1个RenderAction,就没有问题!!!!
您需要先枚举集合,然后再将其传递给视图。 这意味着您在DbContext的有效范围内查询数据库。
您可以通过在控制器中使用.ToArray()来完成此操作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.