我正在编写一个用于验证模型的自定义验证属性,我需要一些除ValidationResult
提供的信息之外的其他信息。我需要返回ErrorMessage
和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
};
}
}
如果失败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.");
}