[英]How can I use same property with conditional validation
我是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();
您可以在控制器内部执行此操作。
另一方面,如果您真的需要它在两个页面中表现不同,建议您使用两个不同的ViewModel。 这是一些代码重复,但是比共享并不完全相同(并且仅在命名方面相似)的共享代码要好得多
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.