返回自定义验证结果并从 Asp.Net Core 中的控制器访问它



我正在编写一个用于验证模型的自定义验证属性,我需要一些除ValidationResult提供的信息之外的其他信息。我需要返回ErrorMessageErrorCode并在控制器类中访问它,以便我可以在响应有效负载中发送它。

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
};
}
}

如果失败ModelState.IsValid我需要在控制器中取出错误代码。

提前谢谢。

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

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

如果模型用错误消息装饰,例如:

Class TypeA
{
[Required[ErrorMessage="Should not be null"]]
public string Name;
}

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

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

例如:-

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

最新更新