使用asp.net core和Jquery从ajax请求将对象绑定到asp mvc控制器

问题描述 投票:4回答:2

我正在努力将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;
}
jquery asp.net-mvc asp.net-core model-binding
2个回答
2
投票

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);
}

0
投票

可能是一个微不足道的问题,但我忽略了它,花了几个小时试图调试这个问题。

确保您绑定的模型的属性标记为公共。

© www.soinside.com 2019 - 2024. All rights reserved.