ASP.NET MVC中的更改密码的可选验证

时间:2012-12-03 05:40:58

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

我有以下型号

public AccountInfo {

    // loads of other property here as well.

    public string Password { get; set; }

    public string NewPassword { get; set; }

    [Compare("NewPassword", ErrorMessage = "New Passwords dont match.")]
    public string ConfirmNewPassword { get; set; }

}

我正在使用数据注释来显示客户端验证消息。

现在我正在处理更改用户个人资料详情页面。

我需要做的是,除了电子邮件,全名,地址等其他详细信息外,我还要显示3个字段

  • 当前密码
  • 新密码
  • 确认新密码

现在的情况是这些是可选字段,用户可能无法填写它。但是当他这样做时,我想确保填写所有3个字段。,如果不是,我想使用数据注释显示一些验证错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

没有任何内置数据注释。您可以创建自定义属性来进行验证,但这并不容易。因此,我建议您使用Jquery Validation / Javascript来处理这个问题。

基本上你想覆盖提交事件并在那里做你自己的验证逻辑。您的代码与此类似:

function SubmitToServer() { 
    if ($('#Password').length == 0 || ($('#Password').length > 0 && $('#NewPassword ').length > 1 && $(formId).valid()) {
        $(formId).submit();
    }
}

答案 1 :(得分:0)

您可以使用[Required]告诉RAZOR这些是必须的或强制性的......

[Required]
public string Password { get; set; }

 [Required]
 public string NewPassword { get; set; }

 [Required]
 [Compare("NewPassword", ErrorMessage = "New Passwords dont match.")]
 public string ConfirmNewPassword { get; set; }

如果您想提供价值范围,请使用此值 - [Range(1, 100)]

如果你想使用密码长度意味着使用这个 - [StringLength(5)]