繁体   English   中英

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

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

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