Asp.net core 如果在模型类中但不在页面属性上,则会激发自定义验证
我在ASP.NET Core 2.0中实现了一个contact Razor页面。我正在使用模型绑定和自定义验证 如果在单独的模型类上使用自定义验证,则会调用验证方法。如果对PageModel上的属性使用自定义验证,则不会调用验证方法。但是,所有属性都已成功绑定 以下是PageModel类和单独的模型类:Asp.net core 如果在模型类中但不在页面属性上,则会激发自定义验证,asp.net-core,razor-pages,Asp.net Core,Razor Pages,我在ASP.NET Core 2.0中实现了一个contact Razor页面。我正在使用模型绑定和自定义验证 如果在单独的模型类上使用自定义验证,则会调用验证方法。如果对PageModel上的属性使用自定义验证,则不会调用验证方法。但是,所有属性都已成功绑定 以下是PageModel类和单独的模型类: 公共类联系人模型:页面模型 { [BindProperty] 公共ContactMessageModel ContactMessageModel{get;set;} [BindProperty,
公共类联系人模型:页面模型
{
[BindProperty]
公共ContactMessageModel ContactMessageModel{get;set;}
[BindProperty,CustomValidation]
公共字符串SomeData{get;set;}
public IActionResult OnPostAsync()
{
如果(!ModelState.IsValid)
{
返回页();
}
返回重定向Topage(“MessageSent”);
}
}
公共类模型
{
[必需]
公共字符串名称{get;set;}
[必需]
公共字符串电子邮件{get;set;}
[必需,自定义验证]
公共字符串消息{get;set;}
}
测试验证属性类如下所示:
公共类CustomValidationAttribute:ValidationAttribute
{
受保护的重写ValidationResult有效(对象值,ValidationContext ValidationContext)
{
返回ValidationResult.Success;
}
}
验证属性是为ContactMessageModel.Message
属性调用的,但它不是为ContactModel.SomeData
属性调用的
这是为什么?我该如何修复它?我也遇到了这个问题。在我的例子中,我的问题是,当我将属性从包装类模型直接移动到
PageModel
中时,我没有添加[BindProperty]
属性。我看你不是这样的
在您的情况下,我确实看到您在所有属性上都有
[必需]
属性,除了ContactModel.SomeData
。也许添加[必需的]
会让事情按照您的预期运行?我注意到了同样的事情@fractor-你找到了这背后的任何原因,或是解决它的方法吗?