Я пытаюсь передать список OrderLines в действие контроллера асинхронного с помощью Javascript:MVC 4: пройти сложный объект для асинхронного действия контроллера
var model = "<some JSON string>";
$.ajax({ type: "POST",
url: "/MyController/MyAction",
datatype: "json",
data: { 'orderLines': model},
success: function(msg) {
...
}
});
Когда я проверяю переменные модели во время выполнения, значение свойства упорядоченной строки установлены в порядке. Но когда я ставлю точку останова в своем действии контроллера, свойства входящего параметра порядка: 0. Похоже, что строка JSON не была десериализована должным образом.
Действие контроллера выглядит следующим образом:
public ActionResult AsyncUpdateOrderline(List<OrderLine> orderLines)
{
...
}
Как правильно пройти сложный объект действие контроллера асинхронного?
Спасибо, Nils
Спасибо, сейчас почти работает. Единственное, что не работает: у меня есть объект UnitPrice в строке заказа. Все поля этого объекта десериализованы нормально, за исключением поля «Сумма». Это значение 0 в действии контроллера, тогда как оно задано десятичным значением в строке JSON. Есть идеи? – ngruson
Попробуйте установить его как строку в свой javascript-объект. Например: '{unitPrice: '12 .34 '}' вместо '{unitPrice: 12.34}'. Если вас интересует информация о том, почему это необходимо, вы можете посмотреть следующий ответ, где я объяснил это: http://stackoverflow.com/a/8968207/29407 –
Строка JSON генерируется JavaScriptSerializer(). Сериализация (OBJ). Есть ли какой-либо умный способ повлиять на то, как JavaScriptSerializer обрабатывает десятичные значения? Если нет, я должен сделать более грязное исправление. – ngruson