' ObjectContext实例已被处理'在Razor的Html.Raw()中

时间:2016-06-13 08:36:26

标签: c# json asp.net-mvc razor

我正在尝试将我的模型转换为JSON字符串,因为我希望在此特定视图中使用Knockout绑定。

首先,我尝试将模型转换为JSON字符串,如下所示:

@{
    var serializerSettings = new Newtonsoft.Json.JsonSerializerSettings();
    serializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
    var jsonData = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializerObject(Model, serializerSettings));
}

在最后一行(实际转换)中,发生以下错误:

  

ObjectContext实例已被释放,不能再用于需要连接的操作

我的控制器只是从数据库中获取对象,就像这样:

public ActionResult Partner(int id)
{
    using(var db = new DatabaseContext())
    {
        var partner = db.Partners
            .Include(x => x.OperatingCountries)
            .Include(x => x.Secrets)
            .FirstOrDefault(x => x.Id = id);

        return View(partner);
    }
}

我在另一个没有发生此错误的视图中完成了相同的操作。造成这种情况的原因,以及我该如何处理?

1 个答案:

答案 0 :(得分:0)

实体框架中的实体对象不应用于序列化。将这些对象存储在分布式缓存中时会发生同样的问题。

如果您仍想使用Entity对象进行序列化,请禁用延迟加载。

Fragment