MVCコントローラにモデルと文字列を渡す(または渡す)JSがあります。javascriptからMVC3コントローラへのモデルと追加パラメータの投稿
JSコードは次のとおりです。
$.ajax({
url: self.ajaxValidationUrl,
type: "POST",
data: { model: $("form").serialize(), stepList: thisStepList },
async: false,
success: function(errors) {
console.log("Errors...");
if (errors.length > 0) {
anyServerError = true;
}
for (var i = 0; i < errors.length; i++) {
console.log(errors[i].ErrorMessage);
self.errorList += "<li>" + errors[i].ErrorMessage + "</li>";
}
}
});
コントローラは次のようになります。
[HttpPost]
public ActionResult ValidateReport(MyTemplate model, string stepList)
{
var errors = model.Validate();
return Json(errors);
}
モデルパラメータが空白で、MyTemplateにオブジェクトに解決されていません。投稿後のパラメータはOKです。
あなたはフィドラーまたは火かき棒で見ることができる投稿された値を投稿できますか?またMyTemplateクラスを投稿してください – Rafay
あなたの問題はおそらくあなたが投稿しているデータにあります。 '$(" form ")。serialize()'はフォームをポストデータ( 'foo = bar&bar = baz')にシリアル化し、オブジェクトを' data'として渡すので、jQueryはこれを再びシリアル化します。つまり、 'model = foo%3Dbar%26bar%3Dbaz&stepList = ...'のようなものを投稿します。サーバーはどのフォーマットでデータを期待していますか?私は、 'serialize'を' serializeArray'に変更することがそのトリックを行うかもしれないと推測しています。 –
はここ応答のサンプルです:モデル\t ReportId = c86b8427-e249-4384-bc47-5300b2f9e346&ユーザーID = ee733263-8fe3-41a9-b511-7e501e0bf2df&たCompanyId = 10c5caf6-b50f-4b31-8842-4a257dde9275&REPORTNAME =テスト+今&TimePeriodType =昨日 stepList \t ReportName、ReportList、ReportTypes – Matt