如何将相同的属性与条件验证一起使用

本文关键字:验证 条件 一起 属性 | 更新日期: 2023-09-27 18:35:24

我是MVC的新手,正在开发一个示例应用程序。

它具有用户注册和登录表单。

在用户注册中,我需要根据正则表达式检查密码以确保它遵循密码策略,因此我对User模型中的 Password 属性进行了以下验证:

[RegularExpression("(?=.{8,})(?=.*?[0-9])(?=.*?[A-Z]).*?[a-z].*", ErrorMessage = "Password requirement not met, please check password policy.")]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
当我从"登录"页面使用此属性时,验证

将按照我在模型中的定义显示,但我不想在从"登录"页面调用它时检查此验证。

请告知如何使用此属性,Password ,从登录和注册页面。

谢谢。

如何将相同的属性与条件验证一起使用

您可以专门告诉 ModelBinder 忽略错误:

if (ModelState["Password "] != null) ModelState["Password "].Errors.Clear();

您将在控制器中执行此操作。

另一方面,如果你真的需要它在两个页面中表现不同,我建议使用两个不同的ViewModels。这是一点代码重复,但它比共享代码要好得多,共享代码并不完全相同(仅在命名方面相似)