通过Ajax Call MVC时模型是否为空?

时间:2015-10-09 09:16:35

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我是MVC中的新鸟。我想将Model传递给Ajax调用,我编写以下代码来执行此操作。但它总是将NULL传递给所有属性。

   $("#btnsubmit").click(function () {

        alert('hello');
        var productModel = {
            Name: 'ram@mailinator.com',
            Address: "Chai"

        };
        $.ajax({
            type: "POST",
            url: '@Url.Action("ContactDistributor", "AjaxCallTest")',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({ model: productModel }),

            dataType: "json",
            success: function () { alert('Success'); },
            error: function (xhr) {
                alert(xhr.error);
            }
        });
        return false;

    });

模特:

    public class AjaxCalltestModal
{
    public int Id { get; set; }
    public String Name { get; set; }
    public String Address { get; set; }

}

控制器:

        [HttpPost]
    public ActionResult ContactDistributor(WebApplication1.Models.AjaxCalltestModal a)
    {
        return Json("test");
    }

请帮帮我。

4 个答案:

答案 0 :(得分:5)

我已使用以下代码解决了该问题:

$("#btnsubmit").click(function () {

    alert('hello');
    var productModel = {
        Name: 'ram@mailinator.com',
        Address: "Chai"

    };
    $.ajax({
        type: "POST",
        url: '@Url.Action("ContactDistributor", "AjaxCallTest")',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({ 'model': productModel }),

        dataType: "json",
        success: function () { alert('Success'); },
        error: function (xhr) {
            alert(xhr.error);
        }
    });
    return false;

});

感谢您的努力和评论..

答案 1 :(得分:1)

JSON.stringify({ model: productModel })

应该是

JSON.stringify(productModel)

答案 2 :(得分:1)

最有可能将数据设置为Javascript对象,而不是将其设置为Stringify。因为据我所知,查询ajax方法已经为你做了这个

data:  productModel 

答案 3 :(得分:0)

旧问题,但这可能会在将来对某人有所帮助。如果模型中有一个称为“模型”的属性,则MVC解析器似乎无法正确处理它,并且它也将返回null。

只需将其重命名为其他任何名称,它便可以正常工作。