私の MVC ビュー モデルでは、フォーム内にテーブルがあります。
JavaScript から、次のようにコントローラーを呼び出しています。
$.ajax(
{
type: "POST",
url: "@Url.Action("ReorderClues", "Clues", Model)",
data: JSON.stringify(positions),
contentType:'application/json'
});
そして、私のコントローラーの署名は次のとおりです。
public ActionResult ReorderClues(TreasureHuntDetails treasureHuntDetails, int[] ids)
私が見つけたのは、javascript がこの方法でコントローラーを呼び出すと、データ モデル (TreasureHuntDetails オブジェクト) には、treasureHuntId のみが入力され、それ以外はすべて null であるということです。2 番目のパラメーターである ids 配列が正常に入力されます。これは、ajax 関数で JSON.stringify() を使用するパラメーターです。
私は、treasureHuntId を除いて、他のすべてが null である理由を理解できません。フォームには、次のように、オブジェクトのすべてのプロパティに対して HiddenFor 行があります。
@Html.HiddenFor(m => m.CompletionMessage)
@Html.HiddenFor(m => m.Description)
@Html.HiddenFor(m => m.Clues)
@Html.HiddenFor(m => m.Leaderboard)
@Html.HiddenFor(m => m.TreasureHuntId)
etc.
TreasureHuntId 変数の特別な点はわかりません。コントローラーに到達するオブジェクトに値が取り込まれた唯一の変数であるということです。何か案は?私は何が間違っているのでしょうか?
データ モデル (TreasureHuntDetails) だけを使用して通常の方法でコントローラーを呼び出すと、すべてが適切に入力されるため、Ids 配列にも追加するのは JavaScript だけです (JavaScript コード スニペットの「positions」変数は整数配列)。