使用.NET core 2.1,我在模型上尝试了各种DataAnnotations,但当Title属性为空字符串时,一切仍然有效。我也彼此独立地尝试了它们。
True
这是我的控制器:
public class TestDto
{
public int Id { get; set; }
[Required(AllowEmptyStrings = false)]
[DisplayFormat(ConvertEmptyStringToNull = true)]
[StringLength(200, MinimumLength = 10, ErrorMessage = "200 Characters is the maximum allowed for requirements.")]
public string Title { get; set; }
}
我什至尝试为我的“标题”属性创建自己的注释:
[HttpPost]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public Task<IActionResult> PostAsync([FromBody] List<TestDto> testModelList)
{
if (ModelState.IsValid)
{
foreach (TestDto testModel in testModelList)
{
//do things
return Ok();
}
}else{
return BadRequest("ModelState invalid");
}
}
哪个也不起作用。可能导致什么?它只是忽略了我的注释。如果Title为null,则ModelState无效,但我也需要ModelState对于空字符串也无效。
答案 0 :(得分:0)
我不确定modelstate是否适用于您的模型集合。你可以试试这个吗 伪代码:
if (testModelList.Any(model => !TryValidateModel(model)))
{
return HttpStatusCode.BadRequest;
}
答案 1 :(得分:0)
问题是在我的startup.cs中,我通常添加MvcCore而不是Mvc。描述差异here。我只需要添加DataAnnotations就可以了。