如何在ASP中同时读取请求URI和请求体.asp.net MVC控制器和AJAX

本文关键字:请求 asp net MVC AJAX 控制器 URI ASP 读取 | 更新日期: 2023-09-27 18:02:35

我有一个带有属性和签名的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 post:

$.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 = aaauser = bbb具有来自URL的适当值,但data始终为空。我不想更改路由,并希望JSON对象在请求体中(我知道我可以在路由中设置一个额外的参数,但出于设计原因,我宁愿将其放在请求体中)。但是,我不知道如何从控制器访问此数据。有没有一种方法可以在不改变路由的情况下读取请求体?

如何在ASP中同时读取请求URI和请求体.asp.net MVC控制器和AJAX

在ajax调用中,尝试

data: { data: json.stringify (newdata) }

你当然可以两者兼顾。

确保你有以下标题:

Content-Type: application/x-www-form-urlencoded

您发布的数据通常是一个格式化的字符串,如下所示:

field=bletch&jackwagon=hungrypants

…但它不一定是……

我的猜测是你错过了头表单数据:Content-Type: application/x-www-form-urlencoded

查看这篇文章

同时读取frommuri和FromBody