2013-03-17 64 views
2

我想弄清楚如何验证用户在注册时输入了匹配的密码。是否有内置于MVC 4数据注释的内容,我可以使用它或者是创建自定义验证属性的唯一途径?ASP.NET MVC 4交叉字段或属性验证

如果我必须创建一个自定义验证属性,我该如何访问密码属性(假设我将注释放在confirm密码属性上)?另外,这种类型的验证是否有任何常用的库?

这是我有一个自定义验证属性的开始,只是不知道如何访问密码属性:

public class CrossFieldValidationAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value) //how do I get the other value in here? 
    { 
     //validation logic here 
     return base.IsValid(value); 
    } 
} 

我明白任何帮助!

+0

在创建登录帐户时将密码与数据库匹配或匹配密码? (因此注册)? – bas 2013-03-17 20:03:06

回答

1

您可以创建自己的公共属性自定义属性和设置的附加信息。

public class CustomValidationAttribute : ValidationAttribute 
{ 
    public string MeaningfulValidationInfo { get; set; } 

    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     // do whatever meaningful with MeaningfulValidationInfo 
     return base.IsValid(value, validationContext); 
    } 
} 

您可以设定额外的信息是这样的:

[CustomValidationAttribute(MeaningfulValidationInfo = "blah")] 
public ActionResult Index() 
{ 
    return View(); 
} 

如果你想检查是否都输入的密码是相同的,你可以简单地验证您的模型。

public class LoginModel 
    { 
     [Required] 
     [EmailAddress] 
     public string EmailAddress { get; set; } 
     [Required] 
     public string Password { get; set; } 
     [Required] 
     [Compare("Password")] 
     [Display(Name = "Confirm password")] 
     public string ConfirmPassword { get; set; } 
    } 
} 
-2

你可以使用* 比较验证*控制内置的ASP.NET工具

我在下面提供了一个样本

<body> 
    <form id="form1" runat="server"> 
    <div> 

    <asp:Label 
     id="lblBirthDate" 
     Text="Birth Date:" 
     AssociatedControlID="txtBirthDate" 
     Runat="server" /> 
    <asp:TextBox 
     id="txtBirthDate" 
     Runat="server" /> 
    <asp:CompareValidator 
     id="cmpBirthDate" 
     Text="(Invalid Date)" 
     ControlToValidate="txtBirthDate" 
     Type="Date" 
     Operator="DataTypeCheck" 
     Runat="server" /> 

    <br /><br /> 

    <asp:Button 
     id="btnSubmit" 
     Text="Submit" 
     Runat="server" /> 

    </div> 
    </form> 
</body> 

请参考任何链接的下方扩大你的知识

http://www.java2s.com/Tutorial/ASP.NET/0160__Validation/CompareValidatorperformsthreedifferenttypesofvalidations.htm

http://www.vkinfotek.com/aspnetvalidationcontrols.html

1

比较注释是最简单的选择。如下所示,Compare指向Password属性。

[Required] 
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 
[DataType(DataType.Password)] 
[Display(Name = "Password")] 
public string Password { get; set; } 

[DataType(DataType.Password)] 
[Display(Name = "Confirm password")] 
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
public string ConfirmPassword { get; set; }