Asp.Net Web API未从角度接收Post数据

时间:2016-01-21 10:04:20

标签: c# asp.net angularjs asp.net-mvc asp.net-web-api

请帮帮我。

我想使用$ 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();
        }

由于

2 个答案:

答案 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}}