ASP.net Web API 2 ModelState始终有效

时间:2018-11-05 19:39:11

标签: c# asp.net-mvc validation asp.net-web-api2

在回顾了几篇文章和SO问题之后,我仍然不明白为什么我的验证属性没有触发。

为简单起见,我简化了模型,并添加了字符串testing进行调试。

using System;
using System.ComponentModel.DataAnnotations;

namespace PublicApi
{
  public class CostStandardRequest
  {
    [DateLessThan("EndDate", ErrorMessage = "StartDate must be less than EndDate")]
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }

    [Required]
    public string testing { get; set; }
  }
}

在我的控制器中,我通过向null类中的测试属性传递一个CostStandardRequest值来测试我的方法。但是,ModelState.IsValid会返回true,尽管其值为空。

[HttpPost]
public async Task<ActionResult<string>> PostCostingStandard(CostStandardRequest request)
{
  if (ModelState.IsValid)
  {
    // always valid
  }
  else
  {
    // never runs
  }
}

我已经按照指南in the documentation

达到了这一点。

注意:即使我的自定义验证属性[DateLessThan]应该返回ValidationResult(ErrorMessage),ModelState.IsValid仍为true。我没有包含此代码,但如果认为相关,则可以。

0 个答案:

没有答案