Я столкнулся с той же проблемой, и ОДИН РЕШЕНИЕ -
Используйте атрибут [ScriptIgnore] .. это решит проблему.
добавить ссылку на system.web.extensions и добавить пространство имен:
Использование System.Web.Script.Serialization.
Если у вас все еще есть вопросы ... Прочтите ... за некоторым подробным объяснением ..
У меня есть класс User с ..
с использованием системы;
с использованием System.Collections.Generic;
с использованием System.Linq;
с использованием System.Web;
с использованием Iesi.Collections.Generic;
с использованием System.Runtime.Serialization;
пространство имен RAPortal.Core.Entities
{
публичный класс пользователя
{
private int _userId;
private string _firstName;
private string _lastName;
частные IList _applications;
private IList<Group> _groups;
private IList<ApplicationRequest> _applicationRequests;
.... Свойство ..
public virtual int UserId
{
get
{
return _userId;
}
set
{
_userId = value;
}
}
public virtual string Title
{
get
{
return _title;
}
set
{
_title = !String.IsNullOrEmpty(value) ? value.ToUpper().Trim() : null;
}
}
общедоступные виртуальные группы IList
{
get
{
return _groups;
}
set
{
_groups = value;
}
}
public virtual IList<UserPrivilege> UserPrivileges
{
get
{
return _userPrivileges;
}
set
{
_userPrivileges = value;
}
}
public virtual IList<UserRole> UserRoles
{
get
{
return _userRoles;
}
set
{
_userRoles = value;
}
}
... и так далее ...
и у меня есть класс группы ..
с использованием системы;
с использованием System.Collections.Generic;
с использованием System.Linq;
с использованием System.Web;
с использованием System.Web.Script.Serialization;
с использованием System.Runtime.Serialization;
пространство имен RAPortal.Core.Entities
{
группа публичного класса
{
private int _groupId;
private string _name;
private IList<User> _users;
public virtual int GroupId
{
get
{
return _groupId;
}
set
{
_groupId = value;
}
}
public virtual string Name
{
get
{
return _name;
}
set
{
_name = !String.IsNullOrEmpty(value) ? value.ToUpper().Trim() : null;
}
}
[ScriptIgnore]
public virtual IList<User> Users
{
get
{
return _users;
}
set
{
_users = value;
}
}
}
}
Поскольку на пользователя ссылаются в группах ... json думает, что это круговая ссылка, и он выдаст исключение ... поэтому исправление заключается в добавлении [ScriptIgnore] поверх пользователя. И добавьте ссылку и пространство имен к этому классу, как это ..
Это решило мою проблему .. Я уверен, что есть лучшие пути там !!! Приветствия ...
И помните, что вы должны добавлять [scriptIgnore] только в классе groups, а не в классе Users.