我正在尝试处理过滤器中的验证错误。验证响应格式应如下所示:
{
"message": "Validation errors in your request",
"errors": {
"email": [
"The Email is required"
],
"Address": [
"The Address is required"
]
}
}当我尝试执行以下操作时,在我的过滤器中:
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(context.ModelState);
}
}生成的响应格式为:
{
"Email": [
"The Email is required"
],
"Address": [
"The Address is required"
]
}缺少message属性和errors信封。我尝试了很多方法,但都不起作用。例如:
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
var validationErrorResponse = new Dictionary<string, Object>();
validationErrorResponse["message"] = "The request has validation errors";
validationErrorResponse["errors"] = context.ModelState;
context.Result = new BadRequestObjectResult(validationErrorResponse);
}
}
}但是response包含了模型字典的所有属性:
{
"message": "The request has validation errors",
"errors": {
"Name": {
"childNodes": null,
"children": null,
"key": "Name",
"subKey": {
"buffer": "Name",
"offset": 0,
"length": 4,
"value": "Name",
"hasValue": true
},
"isContainerNode": false,
"rawValue": null,
"attemptedValue": null,
"errors": [
{
"exception": null,
"errorMessage": "The Name field is required."
}
],
"validationState": 1
}
}
}https://stackoverflow.com/questions/41426112
复制相似问题