我有一个复杂的JSON对象,该对象没有任何问题即可发送到视图(如下所示),但是当通过AJAX调用将数据序列化回.NET对象时,我无法弄清楚如何将该数据序列化回.NET对象。各个部分的详细信息如下。 var ObjectA = { "Name": 1, "Starting": new Date(1221644506800), "Timeline": [ { "StartTime": new Date(1221644506800), "GoesFor": 200 } , { "StartTime": new Date(1221644506800), "GoesFor": 100 } ] };我不确定如何将该对象传递给Controller方法,下面有此方法,其中,Timelines对象使用Properties镜像上述JS对象。public JsonResult Save(Timelines person)我正在使用的jQuery是: var encoded = $.toJSON(SessionSchedule); $.ajax({ url: "/Timeline/Save", type: "POST", dataType: 'json', data: encoded, contentType: "application/json; charset=utf-8", beforeSend: function() { $("#saveStatus").html("Saving").show(); }, success: function(result) { alert(result.Result); $("#saveStatus").html(result.Result).show(); } });我已经看到了类似的问题,但是与我没有使用表单来操纵数据的问题并不完全相同。 如何使用JSON将复杂类型传递给ASP.NET MVC控制器我还看到了使用'JsonFilter'手动反序列化JSON的参考,但是我想知道是否有一种方法可以通过ASP.NET MVC来实现。或以这种方式传递数据的最佳实践是什么?
3 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
您说“我没有使用表格来操纵数据。” 但是您正在执行POST。因此,实际上,您正在使用一种表单,即使它为空。
$ .ajax的dataType告诉jQuery服务器将返回什么类型,而不是您要传递的类型。POST只能通过表格。jQuery 会将数据转换为键/值对,并将其作为查询字符串传递。从文档:
数据要发送到服务器。如果还不是字符串,则将其转换为查询字符串。它被附加到GET请求的URL上。请参阅processData选项以防止这种自动处理。对象必须是键/值对。如果value是一个Array,则jQuery使用相同的键序列化多个值,即{foo:[“ bar1”,“ bar2”]}变为'&foo = bar1&foo = bar2'。
因此:
您没有将JSON传递到服务器。您正在将JSON传递给jQuery。
模型绑定的发生方式与其他情况下的发生方式相同。
- 3 回答
- 0 关注
- 1168 浏览
添加回答
举报
0/150
提交
取消