【发布时间】:2020-08-11 09:59:27
【问题描述】:
我有一个在 ASP.NET Core 2.0 中实现的联系人 Razor 页面。我正在使用模型绑定和自定义验证。
如果我在单独的模型类上使用自定义验证,则会调用验证方法。如果我对 PageModel 上的属性使用自定义验证,则不会调用验证方法。但是,所有属性都已成功绑定。
这是 PageModel 类和单独的模型类:
public class ContactModel : PageModel
{
[BindProperty]
public ContactMessageModel ContactMessageModel { get; set; }
[BindProperty, CustomValidation]
public string SomeData { get; set; }
public IActionResult OnPostAsync()
{
if (!ModelState.IsValid)
{
return Page();
}
return RedirectToPage("MessageSent");
}
}
public class ContactMessageModel
{
[Required]
public string Name { get; set; }
[Required]
public string Email { get; set; }
[Required, CustomValidation]
public string Message { get; set; }
}
一个测试验证属性类如下:
public class CustomValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
return ValidationResult.Success;
}
}
为ContactMessageModel.Message 属性调用验证属性,但为ContactModel.SomeData 属性调用验证属性。
为什么会这样,我该如何解决?
【问题讨论】:
-
我注意到了同样的事情。 @fractor - 你有没有找到这背后的任何原因,或者解决它的方法?