You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebApi Core:强制要求传入整数类型的输入参数

问题解决:强制WebApi要求传入Id参数

问题原因

你遇到的情况根源在于:

  • int是值类型,默认值为0,当JSON中未传入id时,序列化器会自动给id赋值为0,模型验证会判定该字段存在有效值,不会触发错误。
  • [BindRequired]主要适配表单绑定场景(如FormData提交),对JSON序列化的请求兼容性差,无法检测到JSON中缺失的字段。

解决方案

方案1:将Id改为可空值类型并搭配[Required]

这是最直接的实现方式,把int改为int?(可空整数类型),结合[Required]属性后,当JSON中未传入id时,id会被赋值为null,触发必填验证:

public class sampleModel
{
    [Required(ErrorMessage = "Id是必填项")]
    public int? id { get; set;}

    [Required]
    public string Name { get; set; }
}

方案2:范围验证(针对必须保留非可空int的场景)

如果业务要求必须使用非可空int类型,可以通过[Range]属性限制id不能为默认值0,以此间接实现必填校验:

public class sampleModel
{
    [Range(1, int.MaxValue, ErrorMessage = "Id是必填项")]
    public int id { get; set;}

    [Required]
    public string Name { get; set; }
}

注意:此方法的前提是业务逻辑中id不会取0值,否则会出现误判。

验证生效说明

修改完成后,再次用Postman发送缺失id的JSON请求,WebApi会返回包含"Id是必填项"错误信息的验证失败响应。

内容的提问来源于stack exchange,提问作者Smita Nk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:14:53