在核心控制器中获取“请求有效负载”asp.net

get "Request Payload" in asp.net core controller

提问人:serge 提问时间:5/24/2021 更新时间:6/29/2021 访问量:6306

问:

在客户端,我这样做

$.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

enter image description here如何解决?

C# ASP.NET-CORE-MVC TELERIK-GRID .NET-5 远程验证

评论


答:

5赞 Sabir Hossain 5/25/2021 #1

首先,为您的有效负载创建一个模型,如下所示。

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

    public int Id { get; set; }
}

在控制器方法中Action

public IActionResult KeyExist([FromBody] MyPayload payload)

[FromBody]如果属性名称匹配,将自动映射请求正文。

并且您的电话还有另一个问题,您发送了 AS,但期望ajaxIdstringControllerint

评论

1赞 Rodrigo Rodrigues 5/25/2021
由于这是 json,如果他发送 or ,这将产生相同的效果。如果 OP 将绑定参数声明为 int,则在参数绑定时会解析为 int。14"14"
0赞 Sabir Hossain 5/25/2021
@RodrigoRodrigues你是对的,但在某些情况下,绑定会失败。