如何在网络 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
尽管尽可能使用模型绑定总是更好。
我正在尝试 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
尽管尽可能使用模型绑定总是更好。