我试图通过模型类中的RegulardExpression注解来验证API控制器的输入。当我输入一个字符串输入作为属性的值时,它工作得很好。然而,我遇到的问题是,对于一个空字符串,它不会返回错误,所以在属性值是空字符串的情况下,验证不会返回错误。
下面是我的模型类和注解的例子。
public class TestClass
{
[RegularExpression(@"^[0-9]{7}$")]
public string TestField{ get; set; }
}
控制器的方法是这样的
[Route("update/test")]
[HttpPut]
public async Task<IActionResult> UpdateObject(TestClass test)
{
.........
}
你能告诉我如何设置regex,使它能识别空字符串不是有效输入吗?
更新:在我的类字段中添加[MinLength(1)]属性,使我可以禁止输入空字符串作为字段的输入。
来自MS Docs。
如果属性值为空或空字符串(""),该值会自动通过RegularExpressionAttribute属性的验证。要验证该值不是空或空字符串,请使用 RequiredAttribute 属性。
请看 正则表达式属性备注
因此,正如评论中提到的,你需要添加以下内容。Required
属性也是。