Asp.Net Web API 不会从 angular 接收帖子数据

本文关键字:数据 angular Web Net API Asp | 更新日期: 2023-09-27 18:31:26

请帮帮我。

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

谢谢

Asp.Net Web API 不会从 angular 接收帖子数据

你得到空可能是因为你的 POST 请求与你的方法签名不匹配: 试试这个:

data: { newProduct: $scope.newProduct }

如果仍然不起作用,请尝试从控制器中删除 [FromBody] 属性:

public IHttpActionResult Post(string newProduct)

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

data: $scope.newProduct

或者使用与您的 JSON 匹配的自定义对象,并将其用作方法的参数,例如

[DataContract]
public class NewProductData{
   [DataMember(Name="name")]
   public string Name {get;set;}
}

新方法签名

public IHttpActionResult Post([FromBody]NewProductData newProduct)