1
我想处理过滤器中的验证错误。验证响应格式应该是这样的:如何手动反序列化ModelStateDictionary
{
"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);
}
}
}
但响应包含modeldictionary的所有属性:
{
"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
}
}
}
非常感谢,工作就像一个魅力:) –