返回自定义ValidationResult并从Asp.Net Core中的控制器访问它

时间:2018-08-13 09:15:32

标签: c# asp.net-core model-validation

我正在编写用于验证模型的自定义验证属性,除了#include <sys/time.h> #include <stdio.h> #include <stdlib.h> #include <time.h> 提供的信息之外,我还需要一些其他信息。我需要返回ValidationResultErrorMessage并在controller类中访问它,以便可以在响应有效负载中发送它。

ErrorCode

如果public class CustomValidationResult : ValidationResult { public int ErrorCode { get; set; } protected CustomValidationResult(ValidationResult validationResult) : base(validationResult) { } } public class Mandatory : RequiredAttribute { public int ErrorCode { get; set; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { ErrorCode = 10; var result = base.IsValid(value, validationContext); ErrorCode = 10; return new CustomValidationResult(result) { ErrorCode = ErrorCode }; } } 失败,我需要在控制器中获取ErrorCode。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以从控制器返回,例如:-如果

if(!ModelState.IsValid)
{
return BadRequest(ModelState)
}

如果模型用ErrorMessage装饰,例如:

Class TypeA
{

[Required[ErrorMessage="Should not be null"]]
public string Name;

}

当模型状态作为BadRequest的一部分返回时,将返回错误消息。

如果您有任何自定义验证,则可以从控制器API如下将错误添加到ModelState:

例如:-

if(typeA.Name == "TestName")
{
    ModelState.AddModelError("Name","TestName is not a valid name.");
}