我不确定控制器为什么从Ajax调用接收数据。我可以做错什么吗?
[HttpPost]
[Route("Product/UpdateDetails")]
public ActionResult UpdateProduct (ProductModel model) <<// model here is null
{
Product p = new Product
{
ProductId = p.ProductId,
Price = p.Price,
};
return View("_ProductDetail"); }
下面的Ajax调用:
var model = {
ProductId: 1,
Price: 270.99,
};
var json = JSON.stringify(model)
$.ajax({
url: '/Product/UpdateDetails',
type: 'Post',
contentType: "application/json; charset=utf-8",
model: model,
success: function (results) {
}
});
//Model
public class Product
{
public int Id {get;set;}
public double Price {get;set;}
}
你们可以在上面的代码中发现我可能做错的任何事吗?我看不出任何我做错的事。
答案 0 :(得分:1)
试试这个:
$.ajax({
url: '/Product/UpdateDetails',
type: 'Post',
contentType: "application/json; charset=utf-8",
data: json,
success: function (results) {
}
});
您在模型上使用了JSON.Stringify()
,但忘记在ajax调用中使用变量"json"
,因此ajax尝试发布“非json”模型。
此外,ajax调用中没有model
设置,发布数据的正确设置为data
,正如您所见here。