2016-03-05 48 views
1

我正在開發asp.net webapi項目,我遇到了ModelState問題。當ModelState在asp.net中添加驗證錯誤?

我有一個模型就像這樣:

public class Model 
{ 
    [Required] 
    public DateTime? Date { get; set; } 
} 

,這是我用來處理POST請求代碼:

public IHttpActionResult Post([FromBody]Model model) 
{ 
    model.Date = model.Date ?? DateTime.Now; 
    if (ModelState.IsValid) 
    { 
     return Ok(); 
    } 
    return BadRequest(); 
} 

該代碼響應,爲什麼返回錯誤的請求?

我的問題是當ModelState添加驗證錯誤以及如何解決它?

+0

首先,我認爲你應該使用ActionFilter來集中你的ModelState驗證:http://stackoverflow.com/questions/21654669/how-can-i-centralize-modelstate-validation-in-asp-net-mvc -using-action-filters/21654903#21654903 –

+1

ModelState驗證在''之前完成'到你的控制器。這就是爲什麼上面的代碼失敗。如果您查看上面鏈接的鏈接,您會看到我們可以在「OnActionExecuting」中攔截驗證(在您的操作方法之前執行) –

+0

您是如何執行此操作的。請顯示該代碼。 –

回答

0

由於[必需的]屬性,當Date屬性爲空時,ModelState會失效。即使數值發生變化

model.Date = model.Date ?? DateTime.Now; 

ModelState仍然無效。