JsonResult函数放置未知的Dictionary项

时间:2016-12-20 11:44:40

标签: c# asp.net-mvc

在MVC中我有功能

[HttpPost]
public JsonResult SaveCard(Dictionary<string, Dictionary<string, string>> Data, int? IDPC)
{
   return Json(new { Data = Data, IDPC: IDPC });
}

如果我通过jquery发布数据,如

$.ajax({
    url: "/Ajax/Admin/Hardware/SaveCard",
    type: "POST",
    accept: "application/json",
    data: { Data: [], IDPC: 5 },
    success: function (Response) { }
});

然后将返回

{"Data":{"controller":{},"action":{}},"IDPC":5}

看到问题?我希望Data null为null,因为如果数组为空,ajax不发送Data参数,所以请求只发送IDPC参数,函数SaveCard只检索一个参数,第二个可能是null,但不是。我现在不知道为什么以及为什么有数据参数项如控制器和动作。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

MVC解析器尝试解析Params字典,该字典包含控制器名称和操作名称。

如果要发送空字典,则应明确设置空值:

$.ajax({
    url: "/Ajax/Admin/Hardware/SaveCard",
    type: "POST",
    accept: "application/json",
    data: { Data: null, IDPC: 5 },
    success: function (Response) { }
});

这将被解析为一个空字典。