Я пытаюсь использовать ng-resource
для POST значения для моего веб-api и получить значение обратно в javascript.Параметр POST для web api устанавливается как null
Хотя запрос, похоже, прошел нормально, параметр, передаваемый моей функции public string AddOrder([FromBody]string order)
, кажется, установлен как null
.
orderController.js
var result = $scope.store.sendOrder("hello");
store.js
function store($resource) {
var Resource = $resource('/api/products/');
this.products = Resource.query();
this.sendOrder = function (order) {
var sendOrder = $resource('/api/products');
var result = sendOrder.save("Helloa"); <---
return result;
}
}
ProductController.cs
[Route("api/products")]
[HttpPost]
public string AddOrder([FromBody]string order)
{
return order; //When I put a breakpoint here and check the value of order, it is null.
}
сырья запрос
POST http://localhost:12345/api/products HTTP/1.1
Host: localhost:12345
Connection: keep-alive
Content-Length: 6
Accept: application/json, text/plain, */*
Origin: http://localhost:12345
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://localhost:12345/Home/Cart
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en;q=0.8,es;q=0.6,en-US;q=0.4
Cookie: ai_user=fc592beca77b4a5e8c4a95db221a574a|2014-12-04T18:36:22.7128874+00:00
hello
сырье ответ
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcbXJ5YW4uQVNBVklFXERvY3VtZW50c1xleHByZXNzb1xFeHByZXNzb1x3ZWJzaXRlc1xjb25zdW1lclxhcGlccHJvZHVjdHM=?=
X-Powered-By: ASP.NET
Date: Mon, 12 Jan 2015 10:45:03 GMT
Content-Length: 4
null
Кто-нибудь есть какие-нибудь идеи?
Редактировать
Самый быстрый/простое решение это было обернуть строку в объект следующим образом:
Order.cs
public class Order
{
public string order { get; set; }
}
ProductController.cs
[Route("api/products")]
[HttpPost]
public Order AddOrder([FromBody]Order order)
{
return order;
}
Хотя немного отличается от симптомов, проблема может заключаться в том, что вы возвращаете 'string' из своего контроллера вместо' HttpResponseMessage'. Посмотрите на мой ответ здесь, надеюсь, он вам поможет: http://stackoverflow.com/questions/27580145/how-to-deal-with-string-primites-in-angularjs-and-http/27580296#27580296 –
Когда я ставлю точка останова в 'return order;' и проверить значение '[FromBody] string order', оно равно null. Таким образом, кажется, что значение, переданное в 'AddOrder', равно нулю – TomSelleck
Да, у меня были проблемы с этим тоже в то время. Я сдался и передал объект, обертывающий строку вместо этого. –