Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如果在模型类中但不在页面属性上,则会激发自定义验证_Asp.net Core_Razor Pages - Fatal编程技术网

Asp.net core 如果在模型类中但不在页面属性上,则会激发自定义验证

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,

我在ASP.NET Core 2.0中实现了一个contact Razor页面。我正在使用模型绑定和自定义验证

如果在单独的模型类上使用自定义验证,则会调用验证方法。如果对PageModel上的属性使用自定义验证,则不会调用验证方法。但是,所有属性都已成功绑定

以下是PageModel类和单独的模型类:

公共类联系人模型:页面模型
{
[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-你找到了这背后的任何原因,或是解决它的方法吗?