Извините за фиктивный вопрос, но я не могу найти простой и чистый способ сделать что-то простое. У меня есть MVC-контроллер, который должен возвращать объект JSON, который будет использоваться некоторым JavaScript; если я установил его возвращаемый тип в JsonResult и вернул Json (objecttoserialize), я могу видеть через Firebug, что код JSON возвращается и интерпретируется правильно. Во всяком случае, я должен использовать вручную закодированную строку JSON, потому что:JsonResult из уже форсированной строки
- компонент, который упорядочивает объект Я хочу вернуться хозяйничается во внешней библиотеке, и я не должен трогать.
- этот компонент сериализуется сам по себе, поскольку он имеет член словаря , представляющий свойство NAME и VALUE соответствующего объекта JS.
Например, запись в словаре, такая как «ширина» для ключа и «20» для значения, должна быть сериализована как {width: "20"}, то есть, как если бы объект .NET обладал свойством Ширина со значением 20, тогда как у него просто есть словарь с переменным числом таких пар свойств/значений, который должен быть представлен свойствами объекта в объектах JS. Вот почему компонент имеет свой собственный метод сериализации JSON. Таким образом, я должен просто вернуть созданный им JSON.
Поскольку метод Json сериализует объект ввода .NET, я искал googled вокруг, я считаю, что могу использовать ContentResult. Таким образом, я попытался вернуть ContentResult с Content = сериализованной строкой и ContentType = "application/json"; так или иначе клиент JS, похоже, не может понять, что это объект JSON и не удается. Если вместо этого я возвращаю JsonResult, он работает так, как ожидалось, но, конечно, свойства, представленные его членом Словаря, теряются. Я ожидал, что JsonResult будет эквивалентен ContentResult выше, но это, похоже, не так. Код JS, как:
request: function (nodeId, level, onComplete) {
$.ajax({
url: "/Node/Get", type: "POST", dataType: "json",
data: { id: nodeId, level: level, depth: 3 },
success: function (data) {
var ans = data;
onComplete.onComplete(nodeId, ans);
}
});
Если я устанавливаю точку останова в сценарии в Firebug, когда я вернусь JsonResult функция успех ударил; когда я возвращаю ContentResult, он никогда не попадает, и страница остается загруженной загруженным объектом. (Этот JS относится к SpaceTree www.thejit.org). Может ли кто-нибудь дать подсказку?