请帮帮我。
我想使用$ http方法将字符串传递给WebApi控制器的Post方法。但是我在控制器端获得了空字符串。
这是我的客户端代码。
$http({
url: 'http://localhost/MyWebApi/api/home',
method: 'POST',
headers: { 'Content-Type': 'application/json' },
data: JSON.stringify({name: $scope.newProduct})
}).success(function (data, status, headers, config) {
$scope.products = data;
$scope.newProduct = "";
console.log(data);
})
.error(function (data, status, headers, config) {
console.log(data);
});
这是我的WebApi控制器
[HttpPost]
public IHttpActionResult Post([FromBody]string newProduct)
{
var db = new MVCEntities();
db.Products.Add(new Product() { ProductName = newProduct });
db.SaveChanges();
var products = db.Products.ToList();
return Ok();
}
由于
答案 0 :(得分:1)
您的JSON与方法签名不匹配。不需要JSON,您可以将其作为普通字符串传递
data: $scope.newProduct
或使用与您的JSON匹配的自定义对象,并将其用作方法的参数,例如
[DataContract]
public class NewProductData{
[DataMember(Name="name")]
public string Name {get;set;}
}
新方法签名
public IHttpActionResult Post([FromBody]NewProductData newProduct)
答案 1 :(得分:1)
您可能因为您的POST请求与您的方法签名不匹配而获得null:试试这个:
[FromBody]
如果仍然无效,请尝试从控制器中删除public IHttpActionResult Post(string newProduct)
属性:
{{1}}