我有一个API控制器,其中的ModelState验证似乎不起作用。
我的代码基于Visual Studio使用控制器模板“使用实体框架进行操作的Web API 2控制器”提供的脚手架代码。但是,我不是通过API公开数据模型类,而是使用数据传输对象,而是在其中设置属性属性以匹配与EF使用的数据模型类相关联的属性。
这是我的DTO课程:
public class Fee()
{
[Required]
[StringLength(500)]
public string Description { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
public int ID { get; set; }
}
在我的控制器中,我有以下代码:
[HttpPost]
[ResponseType(typeof(Fee))]
public async Task<IHttpActionResult> PostFeeAsync(Fee fee)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
// Rest of code is here
}
如果我使用默认构造函数创建新的Fee,则Description和Name字段为null。因为它们被标记为[Required],所以我希望ModelState.IsValid为false,但是当我运行代码时,情况并非如此。
查看其他文章,我看到一些调用ModelState.Clear()和Validate(fee)的建议,但是当我使用它们时,出现一个异常,提示“ ApiController.Configuration不能为空”。调用Validate方法时。
我在这里做什么错了?