2017-12-07 14 views
0

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

しかし、フォームエラーを表示せずに次のページに送信し、リダイレクトします(明確にするためにコードは削除されています)。

フィールドのエラーメッセージが表示され、必要なエラーメッセージと同じエラーを示すエラーの概要が表示されます。

答えて

0

AllowEmptyString = falseを必須の属性に追加する必要があると思います。

[Required (AllowEmptyStrings = false)] 
+1

これは効果がありません。 – apj1981

0

Goddamnit!そうですね、それは私の部分で完全で完全なねじでした、なぜ私はこの最初を見なかったのか分かりません!私はちょうど私がIFormCollectionフォーム削除モデル

public IActionResult GameDetail(GameDetail model, IFormCollection form) 

を書いて保存するためにIFormCollectionを使用して、私はそれが期待通りに正確に動作しますが、最初だけでレイアウトを並べ替えを取得するための簡単なフォームにページをコード化されました。

関連する問題