我正在努力将json数据从ajax请求发布到asp mvc控制器方法,但是由于某些未知原因,asp mvc模型绑定器没有绑定它。
我试图在SO上发布多个答案,包括以下内容
Post json object to ASP MVC doesn't work properly
但我的jQuery ajax方法总是将空值发布到asp mvc控制器。
基本上,我试图通过ajax请求加载局部视图。
Ajax请求
var myData =
{
"Id": 7,
"Name": "Name 1"
};
var obj = { 'test': myData };
var val = JSON.stringify(obj);
console.log(val);
$.ajax({
type: 'POST',
dataType: 'html',
url: '/Home/Partial',
contentType: 'application/json',
data: val,
success: function (xhr, status, response) {
console.log(response);
$('#1').html(response.responseText);
},
error: function (err) {
alert("error - " + err);
}
});
控制器方法
[HttpPost]
public IActionResult Partial(Test test)
{
return PartialView("_Test", test);
}
模型
public class Test
{
public int Id;
public string Name;
}
myData
足以绑定对象。
var myData = { Id: 7, Name: "Name 1" };
var val = JSON.stringify(myData);
console.log(val);
$.ajax({
type: 'POST',
dataType: 'html',
url: '/Home/Partial',
contentType: 'application/json',
data: val,
success: function (xhr, status, response) {
console.log(response);
$('#1').html(response.responseText);
},
error: function (err) {
alert("error - " + err);
}
});
您还应该考虑参数的[FromBody]
属性,以便模型绑定器知道检查模型的主体。
[HttpPost]
public IActionResult Partial([FromBody]Test test) {
return PartialView("_Test", test);
}
可能是一个微不足道的问题,但我忽略了它,花了几个小时试图调试这个问题。
确保您绑定的模型的属性标记为公共。