Javascript 从angularJS到c#Web api的http.post简单对象为null或所有属性为null
首先,我承认这里有很多问题与我的问题相近,但我已经尝试了我能找到的每一个解决方案,所以我仍然被卡住了 我在My Service.js中的服务方法如下,并附有注释Javascript 从angularJS到c#Web api的http.post简单对象为null或所有属性为null,javascript,c#,angularjs,asp.net-web-api,Javascript,C#,Angularjs,Asp.net Web Api,首先,我承认这里有很多问题与我的问题相近,但我已经尝试了我能找到的每一个解决方案,所以我仍然被卡住了 我在My Service.js中的服务方法如下,并附有注释 postSimpleObject: function () { // Have tried this first, and have passed // as JSON.stringify(simpleObject) var simpleObject = { name: "J Doe",
postSimpleObject: function () {
// Have tried this first, and have passed
// as JSON.stringify(simpleObject)
var simpleObject = {
name: "J Doe",
colour: "Red"
};
// tried to pass this next
var simplerObject = '{ "Name": "J Done", "Colour":"Red"}';
// escaped the quotations and tried this next
var simplerObject2 = '{ \"Name\": \"J Done\", \"Colour\":\"Red\"}';
return $http.post(apiUrl + "PostSimpleObject?item=" + JSON.stringify(simpleObject), {
headers: {
'Content-Type': 'application/json'
}
});
}
这是我在API端的API控制器函数
public class CrudUserApiController : ApiController
{
[System.Web.Http.HttpPost]
public void PostSimpleObject(SimpleObject item)
{
var itemReceived = item;
}
}
我的简单对象类,在api方面
public class SimpleObject
{
public string Name { get; set; }
public string Colour { get; set; }
}
现在,发生的是
- 触发API方法后,路由可以定位控制器和方法
- 收到的模型/对象是一个新的SimpleObject,两个成员的属性均为null
我完全迷路了,非常感谢你的帮助。谢谢 出于一些原因,例如查询字符串长度限制,建议将内容发布在正文而不是查询字符串上 也就是说,如果您坚持使用querystring,则需要告诉WebAPI使用
FromUri
属性查找querystring中的数据,因为默认值是主体:
[System.Web.Http.HttpPost]
public void PostSimpleObject([FromUri]SimpleObject item)
{
var itemReceived = item;
}
或者,您也可以按照ex0dm3nt的要求将内容直接发布到正文中:
$http.post(apiUrl + "PostSimpleObject", simpleObject);
只需将
simpleObject
作为$post
请求中的第二个参数传递,如下所示:
postSimpleObject: function () {
var simpleObject = {
name: "J Doe",
colour: "Red"
};
return $http.post(apiUrl + "PostSimpleObject", simpleObject);
}
为什么要将数据附加到URI?你试过这个吗?您是否尝试过
$http.post(APIRL+“PostSimpleObject”、simpleObject、{headers:{'Content Type':'application/json'}
?将数据作为参数传递(名为项
)有何原因?@ex0dm3nt完全正确。非常感谢。非常感谢。我不知道为什么我要使用查询字符串-事实上我不知道你可以那样直接传递正文。@aeoptude欢迎你!从技术上讲,这两种方法大部分时间都有效,但正文通常是帖子和p的预期数据机制uts。