繁体   English   中英

MVC - 在 ViewModel 中验证是否足够?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM