javascript から mvc コントローラーに 2 つのパラメーターを渡そうとしています。1 つ目はモデルで、2 つ目は文字列です。
html は次のとおりです。
<input type="button" onclick="save(Json.Encode(@Html.Raw(model)), @Html.Raw(object.Id))" />
これがJavaScriptです:
function save(model, id) {
$.ajax({
url: '@Url.Action("SaveModel", "Test")',
type: "POST",
datatype: "json",
data: { model: model, id: id }
}
});
}
そして、ここにコントローラーがあります:
[HttpPost]
public ActionResult SaveModel(Model model, string id)
{
return null;
}
モデル パラメータのみを渡すと、data: { model: model }
機能します。リクエストの投稿は次のようになります。
AProperty value1
AnotherProperty value2
AnArray[0][Property...
AnArray[1][Property...
etc.
しかし、両方のパラメーターを渡そうとするdata: { model: model, id: id }
と、リクエストの投稿は次のようになります
model[AProperty] value1
model[AnotherProperty] value2
model[AnArray][0][Property...
model[AnArray][1][Property...
etc.
リクエストがコントローラーに到達すると、モデル オブジェクトがインスタンス化されますが、すべての値が null になります。シリアライザーが失敗したと思います。
すべての助けに感謝します。