Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用Json.Encode序列化时检测到循环引用_Asp.net Mvc_Json_Json.net - Fatal编程技术网

Asp.net mvc 使用Json.Encode序列化时检测到循环引用

Asp.net mvc 使用Json.Encode序列化时检测到循环引用,asp.net-mvc,json,json.net,Asp.net Mvc,Json,Json.net,我遇到的情况是Json.Encode在本地(localhost)工作,这是64位iis7 windows 7框 如果我部署到windows 2003 32位IIS6,我会得到循环引用错误。下面显示的“Error here”是错误开始的行 @*var model = '@Html.Raw(Json.Encode(Model))';*@ <<<<Error here var model = '@Html.GetJson(Model)'; 有人看到这一点并解决了吗?(不含js

我遇到的情况是Json.Encode在本地(localhost)工作,这是64位iis7 windows 7框

如果我部署到windows 2003 32位IIS6,我会得到循环引用错误。下面显示的“Error here”是错误开始的行

@*var model = '@Html.Raw(Json.Encode(Model))';*@ <<<<Error here
var model = '@Html.GetJson(Model)';

有人看到这一点并解决了吗?(不含json.net)

假设您使用的是实体框架,看看由该框架开发的实体将对该主题有所帮助。例如,我有一个名为Sessions的表和一个名为Enrollments的表,Enrollments表与Sessions表PK具有FK关系。这导致会话对象具有注册的集合,并且注册对象具有注册所针对的会话的虚拟实例。。。这反过来又指向一个注册的集合等。。。您可以了解情况,以及json序列化检测到循环引用问题的原因

解决方案不是查询代码中会话对象的集合,而是查询包含所有相同字段的匿名(非类型化)对象。防止Json.Encode()混淆,因为它不知道Entity Framework在代码隐藏/服务器端代码中可以使用的循环引用。

请检查以下答案:
public static MvcHtmlString GetJson(this HtmlHelper htmlHelper, ViewModel vm)
{
    string s = JsonConvert.SerializeObject(vm);
    return new MvcHtmlString(s);
}