如何在MVC视图中序列化对象时阻止“检测到自引用循环”错误?
var fieldDependants = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model);
我在 Global.asax 中添加了以下配置片段,但仍然遇到同样的错误。
config.Formatters.JsonFormatter
.SerializerSettings
.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
由于
答案 0 :(得分:1)
不知道您在Global.asax
中放置默认设置的位置,您可以通过SerializeObject
调用
Newtonsoft.Json.JsonConvert.SerializeObject(model, New Newtonsoft.Json.JsonSerializerSettings With {.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore}) //VB
Newtonsoft.Json.JsonConvert.SerializeObject(model, New Newtonsoft.Json.JsonSerializerSettings() {ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore}) //CS
答案 1 :(得分:0)
JsonFormatter.SerializerSettings
仅供Web API使用。从MVC视图直接调用SerializeObject
将无法获取它们。您可以尝试在DefaultSettings
上设置全局JsonConvert
代理:
JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
如果这不起作用,则需要将设置直接传递给SerializeObject
,如@Steve所示。