在回顾了几篇文章和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。我没有包含此代码,但如果认为相关,则可以。