C# 范围数据批注不工作

C# 范围数据批注不工作,c#,range,asp.net-core,data-annotations,modelstate,C#,Range,Asp.net Core,Data Annotations,Modelstate,在我的WebAPI项目中,我有 [HttpPost] public void Post([FromBody]AccountDTO accountDto) AccountD包括一些属性,例如: public int AccountId { get; protected set; } [Range(0,100)] public int AccountBalance { get; protected set; } [RegularExpression(COMMA_SE

在我的WebAPI项目中,我有

[HttpPost]
    public void Post([FromBody]AccountDTO accountDto)
AccountD包括一些属性,例如:

public int AccountId { get; protected set; }
    [Range(0,100)]
    public int AccountBalance { get; protected set; }
    [RegularExpression(COMMA_SEPARATED_EMAILS_REGEX)]
    public string Emails { get; set; }
我还添加了过滤器以捕获模型错误:

public void OnActionExecuting(ActionExecutingContext context)
    {
        if (!context.ModelState.IsValid)
        {
            throw new InvalidDataException(string.Join(" ", context.ModelState.Keys.SelectMany(key => context.ModelState[key].Errors.Select(x => key + ": " + x.ErrorMessage))));
        }
    }
现在,如果电子邮件字符串无效-它抛出预期的错误,我也尝试了
[EmailAddress],[Phone],[Required],[StringLength(3)]
,并且都正常工作。 只是[范围(0100)]不工作

我尝试了AccountBalance=50033333的PostAccountDTO,没有抛出错误,也尝试了-5,我得到了状态200


我应该在哪里找虫子?。。。谢谢

试试这个也许会有帮助:

[Required(ErrorMessage = "AccountBalance is required")]
[Range(1.00, 100.00, ErrorMessage = "AccountBalance must be between 1 and 100")]
public Double AccountBalance { get; protected set; }

并确保您正在使用System.ComponentModel.DataAnnotations。

一旦我删除了受保护的验证工作。

同样,将我的从私有更改为公共。