Проверяя ввод на модели, удалите ошибки из ModelState после возврата BadRequest - PullRequest
0 голосов
/ 20 ноября 2018

Для проекта мне нужно проверить вводимые пользователем данные.Когда пользователь делает ошибку, я показываю ошибку во внешнем интерфейсе и сообщаю, что он сделал не так.Я проверяю ввод на моем modelState следующим образом:

    public class UpdateMatchDayScoreViewModel
{
    public int poolId  { get; set; }
    public int homeTeamId { get; set; }
    public int awayTeamId { get; set; }
    [RegularExpression(@"^\d$", ErrorMessage = "De thuis score kan enkel een getal van 0 tot 10 zijn.")]
    public string scoreHome { get; set; }
    [RegularExpression(@"^\d$", ErrorMessage = "De uit score kan enkel een getal van 0 tot 10 zijn.")]
    public string scoreAway { get; set; }
    public int matchDayId { get; set; }
    public string statusMatchId { get; set; }
    public string homeTeamName { get; set; }
    public string awayTeamName { get; set; }
}

Это мой контроллер:

        public async Task<IActionResult> UpdateMatchDayScore([FromBody]UpdateMatchDayScoreViewModel[] model)
    {   
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

Я помещаю ошибку modelState во внешний интерфейс в массив ошибок, например, так:

errors: string[];
  saveScores() {
if (this.inputSettings.valid) {
  for (var i = 0; i < this.updateScore.length; i++) {
    if (this.updateScore[i]["thuisScore"].value === "" && this.updateScore[i]["uitScore"].value === "") {
      this.updateScore.splice(i, 1);
    } else {
      //find matching game
      let matchData = this.temp.find(game =>
        game.homeTeamName === this.updateScore[i]['thuisPloeg'] &&
        game.awayTeamName === this.updateScore[i]['uitPloeg']);
      // set new scores for game
      if (matchData !== null) {
        console.log(matchData);
        console.log(this.updateScore);
        console.log(this.temp);
        matchData["scoreAway"] = this.updateScore[i]["uitScore"];
        matchData["scoreHome"] = this.updateScore[i]["thuisScore"];
        matchData["statusMatchId"] = this.updateScore[i]["status"];;
      }
      // Delete all unwanted properties from the object
      delete matchData.matchDayDate;
      delete matchData.matchDayTime;
      delete matchData.referee;
      delete matchData.statusMatchCode;
      delete matchData.statusMatchName;
      // Push object in array
      this.updatedMatchScores.push(matchData);
    }
  }
  this.errors = [];
  this.matchDayService.updateMatchDayScore(this.updatedMatchScores).subscribe(
    (data) => { this.successfulSave = true },
    (err) => {
      this.successfulSave = false;
      if (err.status === 400) {
        // handle validation error
        let validationErrorDictionary = err.error;
        for (var fieldName in validationErrorDictionary) {
          if (validationErrorDictionary.hasOwnProperty(fieldName)) {
            this.errors.push(validationErrorDictionary[fieldName]);    
          }
        }
        this.checkModel();
      } else {
        this.errors.push("something went wrong!");
      }
    },
    () => {
      this.startup();  
    });
}

}

Мой метод checkModel делает это:

  checkModel() {
if (this.errors.length > 0) {
  for (let error of this.errors) {
    this.toastr.error(error);
  }
}

if (this.successfulSave) {
  this.toastr.error("Scores zijn succesvol opgeslagen!");
}

}

Метод запуска выходит за рамки этой проблемы.Как очистить ошибки modelState?Я не могу просто очистить свой массив ошибок, так как modelState просто выталкивает каждую ошибку обратно в него, и каждый раз, когда пользователь изменяет ввод, ошибки просто кратны.Кто-нибудь может мне помочь?

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