Отправить строку JSON в действие MVC через AJAX приходит ноль

Я публикую json-объект через ajax

    $('#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 всегда равно нулю.

Когда я превращаю его в Get Ajax Call через

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

тогда параметр подходит как строка json.

Мне нужно отправить его по почте.

РЕДАКТИРОВАТЬ ***** JS значения

Я отлаживаю в Chrome, и jsonData передается в "данные ajax":

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}

1 ответ

Подобный ТАК вопрос, который решит вашу проблему

Вам, вероятно, понадобится создать модель, которая будет принимать список вместо списка строк.

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 вместо.

Другие вопросы по тегам