Для проекта мне нужно проверить вводимые пользователем данные.Когда пользователь делает ошибку, я показываю ошибку во внешнем интерфейсе и сообщаю, что он сделал не так.Я проверяю ввод на моем 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 просто выталкивает каждую ошибку обратно в него, и каждый раз, когда пользователь изменяет ввод, ошибки просто кратны.Кто-нибудь может мне помочь?