【问题标题】:ASP.NET controller does not receiving data from Ajax POST callASP.NET 控制器不接收来自 Ajax POST 调用的数据
【发布时间】:2019-08-15 09:51:16
【问题描述】:

我基本上已经回答了所有问题,但似乎我错过了一些非常基本的东西。

我有一个简单的课程:

public class Recebe
{
    public string Name { get; set; }
    public string Email { get; set; }
}

控制器 POST 操作:

[HttpPost]
public IActionResult ToggleLikeClicked(Recebe recebe)
{
    return Json("Retorno");
}

还有一个 Ajax 调用:

$.ajax({
     type: 'POST',
     url: '/StartUps/ToggleLikeClicked',
     contentType: 'application/json',
     dataType: 'json',
     data: JSON.stringify({
          'Name': 'Sergio',
           'Email': 'sergio@difiore.com.br'
     }),
     beforeSend: function () {
        console.log('Before send');
     },
     success: function (response) {
        console.log('success');
        console.log(response);
      },
      complete: function () {
         console.log('completed');
      },
      error: function (jqXHR, textStatus, errorThrown) {
          console.log('Status: ' + jqXHR.status + '; Error: ' + jqXHR.responseText);
      },
  });

从浏览器控制台,我知道整个事情已经执行,但调试时“接收”为空。

怎么了?

【问题讨论】:

  • 我怀疑您创建的 json 与 Recebe 的“形状”不同。
  • 刚刚发送了一个字符串值,然后检查它的命中 ToggleLikeClicked。

标签: c# asp.net-mvc asp.net-ajax


【解决方案1】:

尝试编辑您要发送到的 JSON:

{
    'name': 'Sergio',
    'email': 'sergio@difiore.com.br'
}

您也可以尝试在控制器的参数中添加[FromBody]属性:

public IActionResult ToggleLikeClicked([FromBody] Recebe recebe)

【讨论】:

  • 只是为了记录,它与 [FromBody] 一起工作并且必须保留 JSON.stringify。
猜你喜欢
  • 2021-11-23
  • 2017-10-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多