0

私はこれのviewmodelがあります、しかし、私は必要なLastNameを省略する場合なぜ検証要約がレンダリングされないのですか?

<form asp-action="Create"> 
    <div class="form-horizontal"> 
     <h4>PersonBindingModel</h4> 
     <hr /> 
     <div asp-validation-summary="ModelOnly" class="text-danger"></div> 
     <div class="form-group"> 
      <label asp-for="LastName" class="col-md-2 control-label"></label> 
      <div class="col-md-10"> 
       <input asp-for="LastName" class="form-control" /> 
       <span asp-validation-for="LastName" class="text-danger"></span> 
      </div> 
     </div> 
    </div> 
    ... 
    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Create" class="btn btn-default" /> 
     </div> 
    </div> 
</form> 

public class PersonBindingModel 
{ 
    public int Id { get; set; } 
    [Required] 
    public string LastName { get; set; } 
    public string FirstName { get; set; } 
    public int Age { get; set; } 
} 

と標準.NET CoreおよびEFコアパッケージによってそれのためにスキャフォールドCreateビューの関連部分を私はその入力の下で妥当性確認メッセージを得るだけで、妥当性検査の要約は全くレンダリングされません。私のプロジェクトの他のすべてのフォームでは、サマリーだけでなく、LastName入力のメッセージが表示されます。私が追加した無関係のカスタム検証と共に、検証コントローラ側結合モデルをテストしていたように、私は、、すなわち_ValidationScriptsPartialをクライアント側の検証が省略されている

<form action="/persons/Create" method="post"> 
    <div class="form-horizontal"> 
     <h4>PersonBindingModel</h4> 
     <hr> 

     <div class="form-group"> 
      <label class="col-md-2 control-label" for="LastName">LastName</label> 
      <div class="col-md-10"> 
       <input class="form-control input-validation-error" type="text" data-val="true" data-val-required="The LastName field is required." id="LastName" name="LastName" value=""> 
       <span class="text-danger field-validation-error" data-valmsg-for="LastName" data-valmsg-replace="true">The LastName field is required.</span> 
      </div> 
     </div> 
     ... 
     <div class="form-group"> 
      <div class="col-md-offset-2 col-md-10"> 
       <input type="submit" value="Create" class="btn btn-default"> 
      </div> 
     </div> 
    </div> 
    ... 
</form> 

:これは、レンダリングされたフォームです。フォームは、カスタム検証の有無にかかわらず同じようにレンダリングされます。

レンダリングされたHTMLでは、あなたが不足しているLastNameModelStateエラーが発生しました、と私はいつもそれがある限りModelStateは、モデル誤差が含まれているとして、このような形で印象の下にされている、入力名を持つ、すなわち1のはっきりと見ることができますキーとして、検証要約をレンダリングする必要があります。それはなぜですか?私はそれはあなたがキー空の文字列であること「にModelState」

ModelState.AddModelError(string.Empty, x.Description) 

注にエラーを追加する方法だと思います。この特定のケースでは、これが「ModelOnlyは」知っているか

+0

あなたは=「すべて」 'ASP-検証サマリーでみました「ALLは」プロパティエラーとしてカウントされます、そして専用モードで表示されます'? –

+0

@StephenMueckeすべての 'All'オプションは空のプロパティ名キーで追加したインクルードメッセージです。私は実際に有効なキーでエラーが表示されない理由を知りたいので、実際には 'ModelOnly'だけに興味があります。しかし、とにかく試してみるよ、ありがとう。 – ProfK

+0

'ASP-検証サマリーは= "すべて"' '@ Html.ValidationSummary(偽)'と 'ASP-検証サマリー= "ModelOnly" に相当'に相当 '@ Html.ValidationSummary(真)' –

答えて

0

ですプロパティエラーではないことを示します。あなたは空の文字列以外のものを持っている場合

それは

+0

は私がキーであり、 '「」'キー(なく、かなり 'String.Empty'しかし通常は前に働いていた)で、エラーの両方の種類を持っています。この場合、モデルとモデル以外のエラーの組み合わせに対しては何も描画されません。 – ProfK

関連する問題