为模型属性添加自定义验证器。例如,我们在模型中添加了一个自定义验证器“ValidEmailAttribute”来验证电子邮件地址是否有效:
public class ExampleModel { [ValidEmail] public string Email { get; set; } }
创建一个验证器类,其中包含模型属性的自定义验证逻辑。在这个例子中,我们需要检查电子邮件地址是否有效:
public class ValidEmailAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { string email = value as string;
if (string.IsNullOrEmpty(email))
return ValidationResult.Success;
try
{
MailAddress mailAddress = new MailAddress(email);
}
catch (FormatException)
{
return new ValidationResult("Invalid email address format.");
}
return ValidationResult.Success;
}
}
添加数据注解驱动程序代码,它将检查模型属性中添加的自定义验证器,并根据需要生成错误消息。使用以下代码在Startup.cs文件的ConfigureServices方法中启用数据注解驱动程序:
services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddDataAnnotationsLocalization(options => { options.DataAnnotationLocalizerProvider = (type, factory) => factory.Create(typeof(SharedResources)); });
在MVC视图中使用标记辅助器,以便在自定义验证器验证失败时显示错误消息。使用以下代码在视图中:
最后,确保在表单提交时验证模型状态是否为有效状态。在控制器的POST操作中检查ModelState是否为有效状态,例如:
[HttpPost] public IActionResult ExampleAction(ExampleModel model) { if (ModelState.IsValid