JSONオブジェクト(関連性がある場合はJSON化されたノックアウトモデル)をMVCコントローラーにPOSTし、コントローラーに新しいビューを返させようとしています。これを行うために、フォームを使用してデータを送信しています。問題は、コントローラーがJSONを受信したときにJSONを自動的にモデルに変換したいということです。
これにAJAX呼び出しを使用する場合、
var actionModel = new Object();
actionModel.Controls = ko.toJS(self.controls());
var json = JSON.stringify(actionModel);
$.ajax({
url: "MyController/Preview",
type: "POST",
contentType: 'application/json; charset=utf-8',
cache: false,
data: json,
success: function (data) {
}
});
... JSONオブジェクトは正常に逆シリアル化され、モデルクラスのインスタンスに変換されます。
public ActionResult Preview(ActionModel actionModel) { ... }
public class ActionModel
{
public List<ControlModel> Controls { get; set; }
}
フォームを使用してこれを実行する場合は、JSONを非表示の入力フィールドに挿入する必要があることを理解していますが、これを実行するときに管理できる最善の方法は、データをシリアル化された文字列として受信することです。
@using (Html.BeginForm("Preview", "MyController", FormMethod.Post, new { id = "previewForm" }))
{
<input type="hidden" id="hiddenFieldName" />
}
public ActionResult Preview(string hiddenFieldName) { ... }
後で逆シリアル化することもできますが、AJAX呼び出しの場合のように、MVCで変換できれば本当に望ましいです。これは可能ですか?
ありがとう。