在传递JSON对象和JSON.stringify时,将JSON传递给JsonResult不起作用

时间:2014-07-25 12:29:01

标签: c# javascript jquery ajax json

我的项目中有这个课程:
enter image description here

我在控制器中创建了一个JsonResult方法,该方法的参数是该类中的一个对象:

        [HttpPost]
    public JsonResult NewAreaCode(AreaCode model)
    {
        return Json(true, JsonRequestBehavior.AllowGet);
    }


我试图在Ajax请求中调用此方法,我尝试了两种方式:

var areaCode = $(dataContent).parent().parent().find("#City_idCity").attr("value");
var City_idCity = $(dataContent).parent().parent().find("#areaCode").attr("value");
var model = JSON.stringify({ "idAreaCode": "0", "areaCode": areaCode, "City_idCity": City_idCity });
$.ajax({
    type: 'POST',
    url: '/Address/NewAreaCode',
    data: model,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data) {
    }
});


function submitNewAreaCode(dataContent) {
var areaCode = $(dataContent).parent().parent().find("#City_idCity").attr("value");
var City_idCity = $(dataContent).parent().parent().find("#areaCode").attr("value");
var model = { "idAreaCode": "0", "areaCode": areaCode, "City_idCity": City_idCity };
$.ajax({
    type: 'POST',
    url: '/Address/NewAreaCode',
    data: model,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function (data) {
    }
});

}
但我无法调用JSON方法。

在第一种情况下,使用JSON.stringify,我得到了无法将Int32转换为String的错误。 在第二种情况下,直接传递对象,我得到错误“无效的JSON原语:idAreaCode”(或者传递的第一个参数中的任何一个,都没关系)。

我不明白发生了什么,因为我在另一个案例中做了类似的事情,但是有一个不同的类: enter image description here


我创建了一个类似的情况,将AreaCode的参数更改为Country,我用下面的代码调用了Ajax请求:

function editCountrySubmit(element) {
element = $(element).parent();
var divCountry = "#" + $(element).attr("id");
var div = $(divCountry).html();
var idCountry = divCountry.substring(divCountry.indexOf("-") + 1, divCountry.length);
var country = $(divCountry + " #countryName").attr("value");
var countryCode = $(divCountry + " #countryCode").attr("value");
$.ajax({
    type: "POST",
    url: "/Address/EditCountry",
    data: { "idCountry": idCountry, "country": country, "countryCode": countryCode },
    success: function (data) {
        updateCountryList(data, element);
    }
});}


有了这个,代码就可以了。

我忘记了什么吗?或者我班上有问题?记住没有任何一个属性接受NULL值。

1 个答案:

答案 0 :(得分:0)

它看起来像是因为您尝试将string表示为零(" 0")放入名为idAreaCode的模型属性中,恰好是int类型的

var model = JSON.stringify({ "idAreaCode": "0", "areaCode": areaCode, "City_idCity": City_idCity });

请改为尝试:

var model = JSON.stringify({ "idAreaCode": 0, "areaCode": areaCode, "City_idCity": City_idCity });