Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
C# aspnetboilerplate自定义验证引发异常_C#_Validation_Asp.net Core_Aspnetboilerplate - Fatal编程技术网

C# aspnetboilerplate自定义验证引发异常

C# aspnetboilerplate自定义验证引发异常,c#,validation,asp.net-core,aspnetboilerplate,C#,Validation,Asp.net Core,Aspnetboilerplate,我正在一个.Net核心项目中使用框架。接下来,我对视图模型进行了自定义验证 首先,我有一个带有自定义验证的简单视图模型: public class EditPropertyViewModel : ICustomValidate { public long Id { get; set; } public long? ParentId { get; set; } public string Title { get; set; }

我正在一个.Net核心项目中使用框架。接下来,我对视图模型进行了自定义验证

首先,我有一个带有自定义验证的简单视图模型:

    public class EditPropertyViewModel : ICustomValidate
    {
        public long Id { get; set; }

        public long? ParentId { get; set; }

        public string Title { get; set; }

        public void AddValidationErrors(CustomValidationContext context)
        {
            if (Id == ParentId)
                context.Results.Add(new ValidationResult("Property cannot be parent of itself!", new [] { "ParentId" } ));
        }    
    }
那么我的控制器是这样的:

        [HttpPost]
        public async Task<IActionResult> Edit(EditPropertyViewModel model)
        {
            if (ModelState.IsValid)
            {
                /* Update property here and return */
            }

            return View(model);
        }
[HttpPost]
公共异步任务编辑(EditPropertyViewModel模型)
{
if(ModelState.IsValid)
{
/*在此处更新属性并返回*/
}
返回视图(模型);
}
但当我运行项目时,出现了以下异常:

AbpValidationException:方法参数无效!有关详细信息,请参阅ValidationErrors


这意味着我的自定义验证已在ModelState.IsValid之前执行,没有机会处理该异常并向用户显示用户友好的消息。通过[DisableValidation]禁用验证会跳过此异常,但也会跳过我的验证逻辑。我还尝试使用.NET的标准IValidatableObject接口代替abp的ICustomValidate,但这并没有帮助我解决问题。

验证就是这样工作的。不,验证不应该引发异常。它应该向ModelState添加错误消息。现在无法处理此异常。请阅读您链接的文档。我已经阅读了。其他人有这个问题没有解决。看这里:问题解决了。验证就是这样工作的。不,验证不应该抛出异常。它应该向ModelState添加错误消息。现在无法处理此异常。请阅读您链接的文档。我已经阅读了。其他人有这个问题没有解决。看这里:问题解决了。