使用DataMember Name属性进行Web API模型验证

时间:2016-05-19 08:16:02

标签: c# validation asp.net-web-api modelstate

我在我的模型上使用[DataMember(Name="property_name")]属性,这些属性用[DataContract]修饰。除此之外,我在每个必需属性上使用[Required]属性进行验证。我有一个注册的ActionFilterAttribute,它会检查ModelState.IsValid是否会产生错误响应:

public override void OnActionExecuting(HttpActionContext actionContext)
{            
    if (!actionContext.ModelState.IsValid)
    {
        actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
    }
}

这一切都运行良好,但是没有在响应对象中返回DataMember名称:

{
  "Message": "The request is invalid.",
  "ModelState": {
    "f.Message": [
      "The Message field is required."
    ],
    "f.AppVersion": [
      "The AppVersion field is required."
    ]
  }
}

在上面的示例中,您可以看到DataMember Name被忽略。我正在寻找的是更多类似的回应:

{
  "Message": "The request is invalid.",
  "ModelState": {
    "f.message": [
      "The message field is required."
    ],
    "f.app_version": [
      "The app_version field is required."
    ]
  }
}

即。使用与我的DataMember名称匹配的属性名称而不是实际的类声明。

任何指导都将不胜感激

非常感谢

0 个答案:

没有答案