在我的 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)]
,并且所有工作都正常好的。
只是 [范围(0,100)] 不起作用...
我尝试使用 accountBallance = 50033333 发布 AccountDTO,并且没有抛出任何错误,还尝试了 -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 。
关于c# - 范围数据注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554887/