我有一个带属性和签名的MVC控制器
[HttpPost]
public void SubmitOrder(string id, string user, [FromBody]string data)
有自定义路线
routes.MapRoute(
name: "Submit",
url: "Order/{id}/{user}/Submit",
defaults: new { controller = "Order", action = "SubmitOrder", id = "", user = "" }
);
接下来,我有一个AJAX帖子:
$.ajax({
type: "POST",
url: baseUrl + "aaa/bbb/Submit",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(newData),
success: function(response) {
console.log(response);
});
我可以访问SubmitOrder(),其中id = aaa
和user = bbb
具有来自网址的正确值,但data
始终为空。我不想改变路由,并希望JSON对象在请求体中(我知道我可以在路由中设置一个额外的参数,但出于设计原因,我宁愿在请求体中使用它) 。但是,我不知道如何从控制器访问此数据。有没有办法在不更改路线的情况下读取请求正文?
答案 0 :(得分:1)
在你的ajax电话中,试试
data: { data: json.stringify (newdata) }
答案 1 :(得分:1)
你当然可以做到这两点。
确保您有以下标题:
Content-Type: application/x-www-form-urlencoded
您发布的数据通常是一个格式如下的字符串:
field=bletch&jackwagon=hungrypants
......但它不一定是......
我的猜测是你错过了表单数据的标题:Content-Type:application / x-www-form-urlencoded
查看此帖