javascript - 使用 MVC3 嵌套 JSON

标签 javascript json asp.net-mvc-3

我一直在四处寻找,到目前为止我还没有找到解决方案。如果我有一些带有嵌套对象的 JSON 发布到我的 Controller ,我怎样才能让它正确绑定(bind)到对象。我的代码非常适用于没有任何嵌套形式的任何对象。解决方案,有人吗?

var object = { "RandomString": "ASDFASDF" };
var nestedobject = { "AnotherString": "ASDFASDF", "Object": object };

$.ajax({
  type: 'POST',
  url: 'Controller/Method',
  data: nestedobject,
  dataType: 'json',
  success: callback
});

最佳答案

只要服务器知道类型,嵌套对象的反序列化应该是完美的......

如果您使用 MVC3 的 JsonValueProviderFactory,您必须确保对您传递的数据进行 JSONify 化,并使用如下所示的适当内容类型...

当为 $.ajax 调用将对象传递给 data 时,jQuery 的默认行为是为对象创建一个 KVP,这可能更适合标准表单提交或查询字符串值,这就是为什么您必须 JSON.stringify 数据。

var o = { "RandomString": "ASDFASDF" };
var nestedobject = { "AnotherString": "ASDFASDF", "SomeObject": o };

$.ajax({
  type: 'POST',
  url: 'Controller/Method',
  data: JSON.stringify(nestedobject),
  dataType: 'json',
  contentType: 'application/json; charset=utf-8',
  success: callback
});

使用 JsonValueProviderFactory 应该正确反序列化参数并映射到 Controller 操作签名,如下所示。

public ActionResult Method(string AnotherString, SomeType SomeObject) { /* ... */ }

public class SomeType { 
    public string RandomString {get;set;}
}

解决方案

为了完整起见,我想把它放在这里。我使用了他给我的代码,但主要问题是我需要用 SerializableAttribute 标记对象。谢谢!

关于javascript - 使用 MVC3 嵌套 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6779987/

相关文章:

JavaScript jQuery 变量我应该避免使用与全局变量冲突

php - jQuery Ajax 与 JSON

php - echo json 以获取 std 对象的更多值

asp.net-mvc-3 - 重定向到新页面后 session 变量为空

asp.net-mvc-3 - Elmah 和 ASP.NET MVC 3

javascript - 解析 xml 并使用 php 将其转换为 json 以便与 $.ajax 一起使用时遇到问题

javascript - 有没有根据 div 宽度自动设置字母间距?

javascript - Swig 模板 : How to check if value exists in array?

json - URL 中的变音符号失败 Codable (Swift) - 怎么办?

asp.net-mvc-3 - ASP.NET MVC - 有一个带有表单的确认按钮