2016-03-05 45 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仍然无效。