C# 如果ModelState无效,请包含有效字段

C# 如果ModelState无效,请包含有效字段,c#,asp.net-mvc,validation,asp.net-web-api,modelstate,C#,Asp.net Mvc,Validation,Asp.net Web Api,Modelstate,在ASP.NET Web API中,我希望在向调用方返回错误时包含一个有效字段 public class User { [Required(ErrorMessage = "ThirdPartyID is required!")] public int ThirdPartyID { get; set; } [Required(ErrorMessage = "Firstname is required!")] public string Firstname { ge

在ASP.NET Web API中,我希望在向调用方返回错误时包含一个有效字段

public class User 
{
    [Required(ErrorMessage = "ThirdPartyID is required!")]
    public int ThirdPartyID { get; set; }
    [Required(ErrorMessage = "Firstname is required!")]
    public string Firstname { get; set; }
    [Required(ErrorMessage = "Lastname is required!")]
    public string Lastname { get; set; }
}
当调用者发布一个用户时,设置了ThirdPartyID和Firstname,但没有Lastname,我想将ThirdPartyID添加到响应中。我使用下面的方法进行模型验证

public class ModelValidationFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.ModelState.IsValid == false)
        {
            actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);
        }
    }
}

我是否可以对用户进行设置,以指示第三方ID应始终包含在返回的错误消息中

您可以使用ModelState.addmodeleror方法

ModelState.AddModelError("VariableName", "Error Message");

如果我在控制器内进行验证,这很好,但我想在ModelValidationFilterAttribute:ActionFilterAttribute中进行验证,对于不同的模型,我想返回的有效字段会有所不同。我很难理解您的业务需求。是否需要第三方?我们可以说是。但是我仍然希望在错误消息中返回它,即使它是由API的使用者在post期间发送的。