[英]MVC - Is validating in ViewModel enough?
因为我首先使用数据库,所以我通过 ViewModel 验证我的输入。 但这是否足以进行验证,还是有一些不成文的规则可以将其添加到例如控制器中?
另外,属性验证最常见的是什么,比如说密码?
[Required]
[StringLength(50)]
[MinLength(3)]
public string Password { get; set; }
这是一个很好的验证吗?
属性验证非常适合它可以做的事情。 除了您提到的验证属性之外,您还有 EmailAddress 属性,它将给定的属性验证为电子邮件地址。
[EmailAddress(ErrorMessage = "Invalid Email Address")]
然后,您可以使用 RegularExpression 验证属性来进行更复杂的自定义验证:
[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")
}
如果您不想在控制器逻辑中使用此类样板验证代码,您可以编写自己的自定义验证属性。 通过这样做,您几乎可以验证您能想到的任何内容。
Internet 上有大量关于该主题的资源。
仅举几例。
不要忘记通过调用 ModelState.IsValid 检查 ModelState 的有效性。 除此之外,我可以想象您需要进行一些额外的数据库验证检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.