我已经查看了一些关于为模型验证创建自定义数据注释clas的问题,到目前为止,我无法从其中任何一个中推断出答案,因为它们在响应中的变化非常大。
我正在尝试运行一个方法,该方法返回一个布尔值,该布尔值输入到该属性的文本框中,但我不知道如何获取属性内容来运行该方法。基本上这是检查此用户名是否已存在的检查。这是我尝试过的,但正如你所看到的,我不知道如何获得输入到该字段中的字符串来运行该方法。
public class Username : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
ADSI adsi = new ADSI();
if (adsi.UserExists(//here's where the text entered should go))
{
return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
}
return null;
}
}
答案 0 :(得分:0)
我明白了。值对象是用户在字段中输入的文本。
public class Username : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
ADSI adsi = new ADSI();
if (adsi.UserExists(value.ToString()))
{
return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
}
return null;
}
}
显然,我用来检查用户名是否存在的方法是我写的,所以你需要参考有关如何操作的文档。
用法:
[Username(ErrorMessage = "Username already exists.")]
public string Username {get; set;}