我的项目中有这个课程:
我在控制器中创建了一个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”(或者传递的第一个参数中的任何一个,都没关系)。
我不明白发生了什么,因为我在另一个案例中做了类似的事情,但是有一个不同的类:
我创建了一个类似的情况,将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值。
答案 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 });