MVC 控制器参数始终为空
MVC controller parameters always null
我的ajax代码
function gonder() {
var params = {
DonationInfo: {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
}
};
$.ajax({
url: '@Url.Action("Index", "Benafactor")',
type: 'POST',
async: true,
data: JSON.stringify(params),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data.success);
$('#target').html(data);
},
error: function () {
alert("error");
}
});
}
我的控制器
[System.Web.Http.HttpPost]
public ActionResult Index([FromBody] Mymodel data)
{
return Json(new { success = true });
}
我也试过用字符串
这是我的模型
public class Mymodel
{
public string name { get; set; }
public string lastname { get; set; }
public string phone { get; set; }
public string type { get; set; }
public string amounth { get; set; }
public string quentity { get; set; }
}
我很努力,寻找了所有相同的问题,但对我没有任何帮助,请帮助我可以看到请求有效负载中的数据,但无法将参数输入控制器
当您将对象(params)
序列化为 json 时,mvc ActionResult
参数模型(Mymodel
)和对象(params)
的结构需要相同的结构,在您的代码中 params
和 Mymodel
不是相同的结构。使其相同将解决问题
var params = {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
};
JSON.stringify没有必要data: params.DonationInfo
使用这个:
var params = {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
}
对于一个复杂的对象,最好使用变量而不是将其包含在ajax方法中
function gonder() {
var data= {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
};
$.ajax({
url: '@Url.Action("Index", "Benafactor")',
type: 'POST',
async: true,
data: JSON.stringify(params),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data.success);
$('#target').html(data);
},
error: function () {
alert("error");
}
});
}
您的控制器将如下所示
[HttpPost]
public ActionResult Index(Mymodel data)
{
return Json(new { success = true });
}
我的ajax代码
function gonder() {
var params = {
DonationInfo: {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
}
};
$.ajax({
url: '@Url.Action("Index", "Benafactor")',
type: 'POST',
async: true,
data: JSON.stringify(params),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data.success);
$('#target').html(data);
},
error: function () {
alert("error");
}
});
}
我的控制器
[System.Web.Http.HttpPost]
public ActionResult Index([FromBody] Mymodel data)
{
return Json(new { success = true });
}
我也试过用字符串
这是我的模型
public class Mymodel
{
public string name { get; set; }
public string lastname { get; set; }
public string phone { get; set; }
public string type { get; set; }
public string amounth { get; set; }
public string quentity { get; set; }
}
我很努力,寻找了所有相同的问题,但对我没有任何帮助,请帮助我可以看到请求有效负载中的数据,但无法将参数输入控制器
当您将对象(params)
序列化为 json 时,mvc ActionResult
参数模型(Mymodel
)和对象(params)
的结构需要相同的结构,在您的代码中 params
和 Mymodel
不是相同的结构。使其相同将解决问题
var params = {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
};
JSON.stringify没有必要data: params.DonationInfo
使用这个:
var params = {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
}
对于一个复杂的对象,最好使用变量而不是将其包含在ajax方法中
function gonder() {
var data= {
name: $('#name').val(),
lastname: $('#lastname').val(),
phone: $('#phone').val(),
type: $('#type').val(),
amounth: $('#amounth').val(),
quentity: $('#quentity').val()
};
$.ajax({
url: '@Url.Action("Index", "Benafactor")',
type: 'POST',
async: true,
data: JSON.stringify(params),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data.success);
$('#target').html(data);
},
error: function () {
alert("error");
}
});
}
您的控制器将如下所示
[HttpPost]
public ActionResult Index(Mymodel data)
{
return Json(new { success = true });
}