在 asp.net 核心控制器中获取 "Request Payload"

get "Request Payload" in asp.net core controller

在客户端,我做

$.ajax({
    url: '/emplacements/keyexist',
    type: "POST",
    data: JSON.stringify(postData),
    dataType: "json",
    traditional: true,
    contentType: "application/json; charset=utf-8",

但是操作方法中的值总是'null'

[AcceptVerbs("GET", "POST")]
public IActionResult KeyExist(
    string nom,            //[Bind(Prefix = nameof(EmplacementDTO.Nom))],
    int id                 //[Bind(Prefix = nameof(EmplacementDTO.Id))]
)
{
    // nom == null
    // id == 0

如何解决?

首先为您的有效载荷制作一个模型,如下所示。

public class MyPayload
{
    public string Nom{ get; set; }

    public int Id { get; set; }
}

在你的控制器中 Action 方法

public IActionResult KeyExist([FromBody] MyPayload payload)
如果 属性 名称匹配,

[FromBody] 将自动映射请求正文。

并且您的 ajax 调用还有另一个问题,即您将 Id 作为 string 发送,但 Controller 期望 int