我参加聚会有点晚了,但我将提供一个替代方案,允许您使用 Ajax 帖子/表单访问 Request.Form。这在 MVC 4 和 jQuery 1.9.1 中进行了测试。
如果控制器的 Request.Form 没有为您的 Ajax 帖子填充,可能是因为您手动序列化数据并将数据发送到 contentType 为的控制器application/json
(常见场景)。
这是一个不会在控制器上填充 Request.Form 的 jQuery.ajax 示例。
// JSON serialized form data.
var data = {"id" : "1234", "name" : "Dave"};
$.ajax({
type: "POST",
url: serviceUrl,
contentType: "application/json",
dataType: "json",
data: JSON.stringify(data || {}),
success: function () { }
});
更改 contentType 将导致控制器像提交表单一样处理帖子。
// Form encoded data. See jQuery.serialize().
var data = "id=1234&name=Dave";
$.ajax({
type: "POST",
url: serviceUrl,
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: "json",
data: data,
success: function () { }
});
您也可以将 contentType 保留为未定义,因为application/x-www-form-urlencoded; charset=UTF-8
它是 jQuery 的默认值。
我会注意到我只使用$.ajax来更好地说明正在发生的事情。您也可以使用$.post,尽管您仍然需要发送表单编码数据