2013-02-04 55 views
0

在ASP.NET Web API中我想在向調用方返回錯誤時包含有效字段。如果ModelState狀態爲無效,則包含有效字段

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; } 
} 

當呼叫者職位與ThirdParyID集合中的用戶和組名字,但沒有姓氏,我想將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); 
     } 
    } 
} 

有什麼我可以在用戶上設置,以表明ThirdPartyID應該總是包含在返回的錯誤消息?

+0

我無法理解您的業務需求。 ThirdPartyId是必需的還是不是? –

+0

我們可以說是。但是我仍然希望在錯誤消息中返回它,即使它在發佈期間由API的使用者發送。 – tom

回答

0

您可以使用ModelState.AddModelError方法。

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

這很好,如果我在控制器內進行驗證,但是我想在ModelValidationFilterAttribute中執行它:ActionFilterAttribute,對於不同的模型,我想要返回的有效字段會有所不同。 – tom