在我的 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,其他所有内容均为空。第二个参数,ids 数组填充成功 - 这是我在 ajax 函数中使用 JSON.stringify() 的参数。
我无法弄清楚为什么除了 TreasureHuntId 之外的其他所有内容都是空的。在表单中,对象的每个属性都有一个 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' 变量是一个整数数组)。