AspNetCore 2で必要なフィールド検証を実行しようとしていますが、何が起こるかはわかりません。 MVC5でAsp NetCore 2必要な検証 - ModelState有効なのは、エラーのときです。
モデル
[Required(ErrorMessage = "The game name cannot be blank")]
[StringLength(100,ErrorMessage = "The game name must be between 2 and 100 characters", MinimumLength = 2)]
[Display(Name = "Name")]
public string GameName { get; set; }
コントローラ
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult GameDetail(GameDetail model, IFormCollection form)
{
if (!ModelState.IsValid)
{
return View(model);
}
// code removed for clarity
}
ビュー
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<form class="form" method="post">
<div class="form-group">
<label class="form-label" asp-for="GameName"></label>
<span asp-validation-for="GameName" class="text-danger"></span>
<input class="form-control" asp-for="GameName" class="form-control" />
</div>
<div class="form-group">
<input class="button" type="submit" value="Continue">
</div>
</form>
このフォームは、入力された値のない投稿された場合、にModelStateは無効となり、エラーは次のようになりますビューに戻りました。
ただし、この例ではModelState.IsValidはtrueですが、エラーカウントは1で、エラーリストにはエラーとしてフィールドが必要であると表示されます。
私がモデルと同様に、この記事にもポストモデルに対するパラメータと[BindRequired]の[バインド(「GameNameを」)]の追加など、いくつかのことを試してみました:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation
しかし、フォームエラーを表示せずに次のページに送信し、リダイレクトします(明確にするためにコードは削除されています)。
フィールドのエラーメッセージが表示され、必要なエラーメッセージと同じエラーを示すエラーの概要が表示されます。
これは効果がありません。 – apj1981