如何在条件验证中使用相同的属性

时间:2016-02-18 16:51:01

标签: c# asp.net validation asp.net-mvc-4 data-annotations

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

其中包含用户注册和登录表单。

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

[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; }

当我在Login页面中使用此属性时,验证正在我在模型中定义时出现,但是当我从Login页面调用它时,我不想检查此验证。

请告知我如何在登录页面和注册页面中使用此属性Password

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

您可以在控制器内执行此操作。

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