我的MVC项目中的控制器从Ajax Post调用返回null

时间:2017-05-04 17:07:52

标签: asp.net-mvc

我不确定控制器为什么从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;}
}

你们可以在上面的代码中发现我可能做错的任何事吗?我看不出任何我做错的事。

1 个答案:

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