0
我試圖通過使用Javascript orderlines到異步控制器操作的列表:MVC 4:複雜的對象傳遞給異步控制器動作
var model = "<some JSON string>";
$.ajax({ type: "POST",
url: "/MyController/MyAction",
datatype: "json",
data: { 'orderLines': model},
success: function(msg) {
...
}
});
當我檢查在運行時的模型變量的值訂單行屬性設置好。但是,當我在我的控制器操作中放置斷點時,orderline傳入參數的屬性爲0.它看起來像JSON字符串未正確反序列化。
控制器的動作看起來是這樣的:
public ActionResult AsyncUpdateOrderline(List<OrderLine> orderLines)
{
...
}
我怎樣才能正確地傳遞複雜對象的異步控制器操作?
感謝, 尼爾斯
謝謝,它現在幾乎工作。唯一不起作用的是:我在訂單行中有一個UnitPrice對象。此對象的所有字段都是反序列化的,除了金額字段。它在控制器操作中爲0,而在JSON字符串中設置爲十進制值。有任何想法嗎? – ngruson 2013-03-11 11:13:52
嘗試在JavaScript對象中將其設置爲字符串。例如:'{unitPrice:'12 .34'}''而不是'{unitPrice:12.34}'。如果您有興趣瞭解爲什麼這是必要的細節,您可以查看下面的答案,我解釋了這一點:http://stackoverflow.com/a/8968207/29407 – 2013-03-11 11:19:22
JSON字符串由JavaScriptSerializer()生成。序列化(OBJ)。有什麼聰明的方式來影響JavaScriptSerializer如何處理小數值?如果沒有,我必須做一個更骯髒的修復。 – ngruson 2013-03-11 11:35:06