如何在网络 api 中读取 form/data 值

how to read form/data value in web api

我正在尝试 POST Json 数据到 API 并使用 HttpContext.Current.Request 对象从键中读取值。

客户端:

var data = { Name: "Tom" };

$.ajax({
    type: "POST",
    url: url,
    data: JSON.stringify(data),
    dataType: "json",
    contentType: "application/json",
    success: function (response) {

    }
    });

在API中:

[HttpPost]
[Route("UploadProduct")]
public HttpResponseMessage Upload()
{

if (string.IsNullOrEmpty(HttpContext.Current.Request["Name"]))
                return "Name is missing";

//... removed for brevity

}

为什么键名总是空的?

我知道 Json 数据只会绑定到模型对象。但是想知道是否可以通过在客户端进行一些更改来从 HttpContext.Current.Request 对象获取数据?

好的,试试这个:

contentType 更改为 application/x-www-form-urlencoded,删除 JSON.stringify() 并按原样传递 JSON 数据。有了这个,您应该能够使用 this.Request.Form["Name"] 或简单地 this.Request["Name"] 甚至 HttpContext.Current.Request["Name"].

获取表单值

当您 POST 数据到服务器时(特别是 application/x-www-form-urlencoded 以外的内容类型),内容被放置在 Request 正文中,因此它不会被可在 Request.Form 名称-值集合对象中读取。

对于嵌套数据,您可以像使用 Javascript 对象文字一样查询值,例如:

var data = {
  Name: "Tom",
  Address: {
    Street: "ABC"
  }
}
this.Request.Form["Address[Street]"] // ABC

尽管尽可能使用模型绑定总是更好。