0
シリアライズされたjsオブジェクトをコントローラに渡し、デフォルトのモデルバインダを自動的にオブジェクトにデシリアライズさせることができません。MVC3 - コントローラへのjavascriptオブジェクトのデシリアライズ
私のオブジェクトに値を手作業でデシリアライズしても問題ありません。私はなぜそれが動作しないか知りたいです。
おかげでここ
はポスト値は、Firefoxからそれを得るjsのコードここ
$.post('/Order/AddRecordAddHocStock2', { idPatient: $patientId, "orderItems": JSON.stringify($orderItems) }, function (data) {
//$("#recordingdialog").html(data).dialog("open");
var $dialog = $("#popup_dialog2");
$dialog.empty();
$dialog
.dialog({
bgiframe: true,
title: $title,
height: 700,
width: 650,
modal: true,
autoOpen: false,
resizable: false
});
$dialog.html(data).dialog("open");
});
私のコードスニペットです。ここ
idPatient 72
orderItems [{"Id":0,"ProductName":"01870","Quantity":0,"StockOnHand":0,"MaxAllowance":12,"OrderTotal":0},{"Id":0,"ProductName":"01870","Quantity":0,"StockOnHand":0,"MaxAllowance":1,"OrderTotal":0}]
は私が予想私のコントローラであり、 orderItemsは、前のjs objから値を自動的に取り込む必要がありますect
[HttpPost]
public virtual ActionResult AddRecordAddHocStock2(long idPatient, List<OrderItemModel> orderItems)
{
var items = Request.Form["orderItems"];
//it's working if I manually deserialize the js object
var data = new JavaScriptSerializer().Deserialize(items,typeof(List<OrderItemModel>));
}
jquery $ .postはコンテンツタイプをサポートしていません。私は$ .ajaxで試してみましたが、うまくいきましたが、もう一度問題があります。データを取り戻すと、jqueryはparseerrorを発生させます。ステータスは200ですが、statstextにはエラー – Vincent
が表示されます。新しいエラーについての詳細情報が必要な場合があります。おそらく、より詳細な新しい質問です。サーバー例外がスローされていますか?フィドラーはレスポンスとして何を示していますか?等 – Haacked
こんにちはHaacked 私は問題を解決しました。私は日付のクエリ文字列に別の問題がありました。デフォルトのモデルバインダーはコントローラのパラメータにバインドできません。私の日付形式はdd/MM/yyyyのように見える – Vincent