C# Asp.Net Web API未从服务器接收Post数据

C# Asp.Net Web API未从服务器接收Post数据,c#,asp.net,angularjs,asp.net-mvc,asp.net-web-api,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.new

请帮帮我

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

谢谢

您的JSON与方法签名不匹配。不需要JSON,您可以将其作为普通字符串传入

data: $scope.newProduct
使用与JSON匹配的自定义对象,并将其用作方法的参数,如

[DataContract]
public class NewProductData{

   [DataMember(Name="name")]
   public string Name {get;set;}
}
新方法签名

public IHttpActionResult Post([FromBody]NewProductData newProduct)

可能是因为您的POST请求与方法签名不匹配,所以您将获得null:请尝试以下操作:

data: { newProduct: $scope.newProduct }
如果仍然不起作用,请尝试从控制器中删除
[FromBody]
属性:

public IHttpActionResult Post(string newProduct)

尝试在JSON.stringify({name:$scope.newProduct})中用newProduct替换name。我尝试了这个方法,但它不起作用。我仍然在使用它null@Hirma如果使用我的第一种方法,请尝试使用内容类型“text/plain”