繁体   English   中英

具有EntityFramework的MVC中的Html.RenderAction

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM