问题
由于循环引用,当返回 json 结果时,我无法在 MVC .Net 中序列化对象。
检测到类型的自引用循环...
我的实体类:
public class Subscriber
{
[JsonIgnore]
public virtual ICollection<Tag> Tags { get; set; }
}
在控制器中:
public JsonResult GetSubscribers(GridRequestModel model)
{
data = ... get data ..
JSON(data, JsonRequestBehavior.AllowGet);
}
似乎 .NET 序列化程序似乎没有考虑到 JsonIgnore,因为我仍然收到错误消息。
尝试的解决方案
我将控制器更改为以下内容:
public JsonResult GetSubscribers(GridRequestModel model)
{
data = ... get data ..
JsonSerializerSettings jsSettings = new JsonSerializerSettings();
jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
string json = JsonConvert.SerializeObject(data, Formatting.None, jsSettings);
JSON(json, JsonRequestBehavior.AllowGet);
}
这次我得到:
无法序列化关系管理器对象。当RelationshipManager 属于没有实现IEntityWithRelationships 的实体对象时,这种类型的对象不能被序列化。
另外,不确定是否可以直接返回字符串,因为我有 JsonResult 的返回类型。会Json(json ... )
工作吗?
任何帮助表示赞赏。谢谢!