0

我正在通过 ajax 发布一个 json 对象

    $('#btnOrder').click(function (e) {
        var jsonData = 
    {
        ScheduleDate: '20/07/2015 17:00',
        UnitNumber: '425196',
        Length: 0.00
    }

        var url = "http://mywebsite.com/Home/MakeOrder";
        $.ajax({
            type: "POST",
            dataType: "json",
            url: url,
            data: JSON.stringify(jsonData),
            contentType: "application/json",
            success: function(result) {

            }
        });
    });

采取以下行动:

[HttpPost]
public PartialViewResult MakeOrder(string jsonData)
{
    // some actions

    return this.PartialView("_Summary", summaryModel);
}

模型:

public class OrderItem
 {
        public DateTime? ScheduleDate {get;set;}
        public string UnitNumber {get;set;}
        public float Length {get;set;}
    }

jsonData 参数值始终为空。

当我把它变成通过

var url = "http://mywebsite.com/Home/MakeOrder/?jsonData=" + jsonData

然后参数作为json字符串很好。

我需要通过邮寄方式发送。

编辑 ***** JS 值

我在 Chrome 中调试,传递给“ajax 数据:”的 jsonData 是

JSON.stringify(jsonData)

jsonData={"ScheduleDateTime":"20/07/2015 17:00","UnitNumber":"425196","Length":0.00}

如果通过非字符串化是:

jsonData = Object {"ScheduleDateTime":"20/07/2015 17:00","UnitNumber":"425196","Length":0.00}
4

1 回答 1

0

类似的SO问题将解决您的问题

您可能需要创建一个模型来接受列表而不是字符串列表。

public class MyJSONObject{

    public DateTime ScheduleDate { get; set; }

    public string UnitNumber { get; set; }

    public double Length { get; set; }

}

并在您的控制器中接受它,例如:

[HttpPost]
public PartialViewResult MakeOrder(List<MyJSONObject> jsonData)
{
    // some actions
    return PartialView("_Summary", summaryModel);
}

如果它不是您需要的列表,那么只需发送单个对象并在您的控制器中接受它MyJSONObject jsonData

于 2015-07-17T14:20:21.677 回答