У меня есть следующий метод Controller Post:
[Route("")]
[ResponseType(typeof(CardPost))]
[HttpPost]
public IHttpActionResult PostCard([FromBody] CardPost CardMetaData)
{
if (!ModelState.IsValid)
{
BadRequest(ModelState);
}//Property is not caught by ModelState
if (CardMetaData.Property == 0)
{
return BadRequest();
}
//Else insert to DBContext
}
Я пытаюсь связать и проверить данные, используя следующий класс Model:
class CardPost
{
[Required(ErrorMessage = "property is required")]
[JsonProperty("property")]
public int Property { get; set; }
[Required(ErrorMessage = "Card Nr. is required")]
[StringLength(6,ErrorMessage ="Card Nr. is 6 characters")]
[JsonProperty("number")]
public string Number{ get; set; }
[Required(ErrorMessage ="Card Code is required")]
[JsonProperty("code")]
public string Code{ get; set; }
[Required(ErrorMessage = "blocked is required")]
[JsonProperty("blocked")]
public bool Blocked { get; set; }
}
Обязательный атрибут отлично работает для числа и кода, но свойства и блокированные неверы выдают исключение, даже если они не включены в запрос POST.
Обходной путь должен сделать ручную проверку, как указано выше, но мне интересно, что за этим стоит?
Проблема отображается только в одном из моих контроллеров.