Я использую Службу WCF, в которой я хотел бы ответить списком объектов.Поскольку мои объекты генерируются структурой сущностей, я не могу вернуть список, так как он имеет некоторые циклические ссылки и сериализация по умолчанию завершается неудачно.Таким образом, я использую анонимные типы для создания списка объектов, содержащих только те свойства, которые мне нужны.Это то, что я делаю, используя Json.NET:
[OperationContract]
public string DoWork()
{
using (X ent = new X())
{
var modules = from p in ent.Modules select new { Name = p.Name, Value = p.ID };
return JsonConvert.SerializeObject(modules);
}
}
Теперь это мой javascript, который отображает результат в таблице:
function btn_onclick() {
var srv = new DDSProjectManagement.ProjectsService();
srv.DoWork(Res, null, null);
}
function Res(dataList) {
var divObj = document.getElementById('tablePos');
var name = 'Name';
var desc = 'Description';
var tableStart = '<table><tbody><tr><th>Name</th><th>Description</th></tr>';
var tableContent = '';
var tableEnd = '</tbody></table>';
for (var i = 0; i < dataList.length; i++) {
tableContent += '<tr><td>' + dataList[i].Name + '</td><td>' + dataList[i].Value + '</td></tr>';
}
divObj.innerHTML = tableStart + tableContent + tableEnd;
}
Если я это сделаю,Параметр, который получает javascript - это просто строка, и он не может видеть его как список моих объектов.Конечно, это должна быть строка Json, и я мог бы попытаться разобрать ее так, чтобы она извлекала из нее объекты.Но я действительно хочу использовать javascript, как он есть сейчас, и изменить сервис.Например, изменение моего сервиса в следующем случае будет работать нормально:
public List<SimpleObject> DoWork()
{
return new List<SimpleObject>() { new SimpleObject("Florin", 1), new SimpleObject("Andrei", 2) };
}
SimpleObject не является объектом EntityFramework, поэтому с этим нет проблем.Я полагаю, что сериализатором по умолчанию является Json, и javascript должен получать в основном тот же параметр: строку Json.
Поэтому мой вопрос заключается в том, как заставить мой метод отправлять список объектов анонимного типа в мой JS в процессе сборкистрока через Json.NET не работает?Заранее спасибо.