我有一个自定义的ValidationAttribute,它检查是否已存在另一个用户。 为此,它需要访问我的数据访问层,这是通过Unity注入到我的控制器中的实例。
我应如何将此(或任何其他内容)作为参数传递给我的自定义验证程序?
这可能吗?即在创建Dal时,应该是一个参数。
public class EmailIsUnique : ValidationAttribute
{
private string _errorMessage = "An account with this {0} already exists";
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
DataAccessHelper Dal = new DataAccessHelper(SharedResolver.AppSettingsHelper().DbConnectionString); //todo, this is way too slow
bool isValid = true;
if(value == null) {
isValid = false;
_errorMessage = "{0} Cannot be empty";
} else {
string email = value.ToString();
if (Dal.User.FindByEmail(email) != null)
{
isValid = false;
}
}
if (isValid)
return ValidationResult.Success;
else
return new ValidationResult(String.Format(_errorMessage, validationContext.DisplayName));
}
}