Отправить строку 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
вместо.