为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET MVC如何将JSON对象从View传递到Controller作为参数

ASP.NET MVC如何将JSON对象从View传递到Controller作为参数

森林海 2019-10-06 13:02:05
我有一个复杂的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。

模型绑定的发生方式与其他情况下的发生方式相同。


查看完整回答
反对 回复 2019-10-06
  • 3 回答
  • 0 关注
  • 1168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信