在ViewModel中验证是否足够
本文关键字:是否 验证 ViewModel | 更新日期: 2023-09-27 18:09:55
因为我首先使用数据库,所以我通过ViewModel验证我的输入。但这是否足以验证,或者是否有一些不成文的规则来添加它,例如在控制器中?
还有,最常用的属性验证是什么,比如密码?
[Required]
[StringLength(50)]
[MinLength(3)]
public string Password { get; set; }
这是一个很好的验证吗?
属性验证非常适合它所能做的事情。除了您提到的验证属性之外,还有EmailAddress属性,它将给定的属性作为电子邮件地址进行验证。
[EmailAddress(ErrorMessage = "Invalid Email Address")]
然后你有正则表达式验证属性来做更复杂的自定义验证:
[RegularExpression(@"^[a-zA-Z''-''s]{1,40}$",
ErrorMessage = "Characters are not allowed.")]
对于条件验证之类的事情,您可以将该逻辑添加到控制器中,并根据需要将错误添加到ModelState中。
的例子:
if (MyProperty == "something" && MyOtherProperty != "something")
{
ModelState.AddModelError("", "MyOtherProperty needs to be something")
}
如果你不想在你的控制器逻辑中使用这种样板验证代码,你可以编写你自己的自定义验证属性。通过这样做,您几乎可以验证您能想到的任何内容。
网上有很多关于这个话题的资源。
如何创建自定义验证属性?
如何创建自定义数据注释验证器
不要忘记调用ModelState. isvalid来检查ModelState的有效性。除此之外,我可以想象您还需要做一些额外的数据库验证检查。