【发布时间】:2017-03-09 16:34:18
【问题描述】:
首先,我承认这里有很多问题与我的问题很接近,但是我尝试了所有我能找到的解决方案,所以我仍然卡住了。
我的service.js中我的Service方法如下,用cmets;
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,两个成员的属性都为空
根据服务中的 cmets,我尝试传递一个字符串化对象、一个 json 字符串和一个转义的 json 字符串。
在 API 方面,我也尝试在签名中的 SimpleObject 参数前面使用 [FromBody] 属性。同样的事情也会发生。
我完全迷路了,非常感谢一些帮助。谢谢。
【问题讨论】:
-
为什么要将数据附加到 URI?你试过这个吗? stackoverflow.com/a/20226220/5724584
-
你试过
$http.post(apiUrl + "PostSimpleObject", simpleObject, { headers: { 'Content-Type': 'application/json' }吗? -
您将数据作为参数传递(命名为
item)是否有原因? -
@ex0dm3nt 这完全正确。非常感谢。
标签: javascript c# angularjs asp.net-web-api