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

我有一个复杂的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来实现。或以这种方式传递数据的最佳实践是什么?


森林海
浏览 1169回答 3
3回答

慕的地8271018

您说“我没有使用表格来操纵数据。” 但是您正在执行POST。因此,实际上,您正在使用一种表单,即使它为空。$ .ajax的dataType告诉jQuery服务器将返回什么类型,而不是您要传递的类型。POST只能通过表格。jQuery 会将数据转换为键/值对,并将其作为查询字符串传递。从文档:数据要发送到服务器。如果还不是字符串,则将其转换为查询字符串。它被附加到GET请求的URL上。请参阅processData选项以防止这种自动处理。对象必须是键/值对。如果value是一个Array,则jQuery使用相同的键序列化多个值,即{foo:[“ bar1”,“ bar2”]}变为'&foo = bar1&foo = bar2'。因此:您没有将JSON传递到服务器。您正在将JSON传递给jQuery。模型绑定的发生方式与其他情况下的发生方式相同。
打开App,查看更多内容
随时随地看视频慕课网APP