ng-resource
을 사용하여 내 web-api에 값을 게시하고 자바 스크립트에서 값을 다시 가져 오려고합니다.웹 API에 대한 POST 매개 변수가 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
,451,515,
원시 응답
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;
}
을
증상이 약간 다르긴하지만 문제는 'HttpResponseMessage' 대신 컨트롤러에서'string'을 반환하는 것일 수 있습니다. 내 대답을 봐, 여기 당신을 돕기 바랍니다 : http://stackoverflow.com/questions/27580145/how-to-deal-with-string-primites-in-angularjs-and-http/27580296#27580296 –
내가 넣을 때 'return order;에 중단 점을 넣고'[FromBody] string order'의 값을 확인하면 null입니다. 그래서 그것은 AddOrder에 전달되는 값이 null 인 것 같습니다. – TomSelleck
그래, 그 때도 그 문제가있었습니다. 저는 포기하고 대신 문자열을 감싸는 객체를 전달했습니다. –