C# 范围数据批注不工作
在我的WebAPI项目中,我有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
[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。一旦我删除了受保护的验证工作。同样,将我的从私有更改为公共。