modelState.isValid не проверяет обязательные оформленные атрибуты - PullRequest
0 голосов
/ 26 февраля 2020

У меня проблема с проверкой ModelState, так как я использую модель с атрибутом, украшенным атрибутом [Required], но он никогда не становится недействительным, даже на null.

Вот контроллер:

[HttpPost("x/{sampleString}")]
[ProducesResponseType(StatusCodes.Status303SeeOther)]
public IActionResult Post(string sampleString, SponsorContractorFilterModel model)
{
    if (!ModelState.IsValid)
        return StatusCode(BadRequest("Model sent is not valid").StatusCode.GetValueOrDefault());
    //do stuff, add location on header and send back the 303.
    return StatusCode(StatusCodes.Status303SeeOther);
}

И модель довольно проста:

public class SponsorContractorFilterModel
{
    /// <summary>
    /// Initializes a new instance of the <see cref="SponsorContractorFilterModel"/> class.
    /// </summary>
    public SponsorContractorFilterModel()
    {
    }

    /// <summary>
    /// Sponsor number.
    /// </summary>
    [Required]
    public int? AnImportantNumber { get; set; }

    public List<int> SomeIds { get; set; }
     //few more attributes not been decorated on purpose.

}

Дело в том, что когда я отправляю с почтальоном объект модели без "AnImportantNumber" или явно null ни в одном из случаев это не показывает, что является недействительным. И когда я отлаживаю его, я вижу его на самом деле как null.

1 Ответ

0 голосов
/ 26 февраля 2020

Я бы предложил использовать атрибут [BindRequired], чтобы убедиться, что данные присутствуют в запросе. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [1] В документах есть раздел , который объясняет немного.

Также есть более старая статья [Обязательный] и [BindRequired]. . NET Ядро MVC, написанное Филиппом В. на эту тему. Это может быть хорошей отправной точкой / вдохновением.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...