C# Asp.Net Web API未从服务器接收Post数据
请帮帮我 我想使用$http方法将字符串传递给WebApi控制器的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({
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”