范围数据注释不起作用
本文关键字:不起作用 注释 数据 范围 | 更新日期: 2023-09-27 17:58:21
在我的web api项目中,我有
[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)]不工作。。。
我试过发布AccountDTO,accountBallance=50033333,没有抛出错误,也试过-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。
一旦我删除了protected
,验证工作就开始了。