我在asp.net MVC中,我正在尝试创建一个自定义ValidationAttribute,它以我的模型类为目标,强制执行一组字段为空或全部填充 . 如果它无效,我希望它返回表单顶部的验证摘要,并突出显示所有必填字段红色,字段本身没有验证消息......这是我的代码...
[AttributeUsage(AttributeTargets.Class)]
public class CourtSearchNameDOBValidator : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var searchData = (CourtSearchModel)value;
if(validationContext == null)
{
return null;
}
var firstNameIsEmpty = string.IsNullOrWhiteSpace(searchData.FirstName);
var lastNameIsEmpty = string.IsNullOrWhiteSpace(searchData.LastName);
var dateOfBirthIsEmpty = searchData.DateOfBirth == null;
var allFieldsAreEmpty = firstNameIsEmpty && lastNameIsEmpty && dateOfBirthIsEmpty ;
// All fields must be filled in if any are filled
if (!allFieldsAreEmpty)
{
if (firstNameIsEmpty || lastNameIsEmpty || dateOfBirthIsEmpty)
{
var validationResults = new ValidationResult("All name fields are required", new List<string>() { "FirstName", "LastName", "DateOfBirth" });
return validationResults;
}
}
return null;
}
}
现在,只有我的FirstName属性被突出显示,并且错误消息“所有名称字段都是必需的”在该字段上(这部分是预期的) . 我不期待和混淆的是其他字段(LastName和DateOfBirth)也不高亮并显示验证消息的部分 . 我把它们包含在ValidationResult的memberNames属性中......