0

Ich habe dieses Viewmodel:Warum wird meine Validierungszusammenfassung nicht gerendert?

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

und einen relevanten Teil der Ansicht Create für sich eingerüstet durch Standard .NET-Core und EF-Core-Pakete:

<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> 

Doch wenn ich die erforderlichen LastName weglassen, Ich erhalte nur eine Validierungsnachricht unter dieser Eingabe und die Validierungszusammenfassung wird überhaupt nicht wiedergegeben. In allen anderen Formularen in meinem Projekt wird die Zusammenfassung sowie die Nachricht unter dem LastName-Eingang gerendert. Dies ist die gerenderten Form:

<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> 

I die Client-seitigen Gültigkeitsprüfung weggelassen, das heißt die _ValidationScriptsPartial, da ich das Modell Bindungsvalidierungssteuerungsseite am testen, zusammen mit einer irrelevanten benutzerdefinierten Validierung I hinzugefügt habe. Das Formular wird nur mit oder ohne die benutzerdefinierte Überprüfung gerendert.

In der gerenderten HTML, man kann deutlich sehen, die fehlenden LastName generierte einen ModelState Fehler, und ich habe immer den Eindruck, dass, wie dies in einer Form, solange ModelState Modellfehler enthalten, dh ein mit Eingangsnamen ist Als Schlüssel sollte die Validierungszusammenfassung gerendert werden. Warum nicht?

+0

zeigen Haben Sie versucht, mit 'asp-Validierung-summary =„All“ '? –

+0

@StephenMuecke Die Option 'Alle' enthält nur Nachrichten, die Sie mit den Namen der leeren Eigenschaftsnamen hinzufügen. Ich möchte eigentlich wissen, warum es meine Fehler nicht mit gültigen Schlüsseln anzeigt, also bin ich eigentlich nur an 'ModelOnly' interessiert. Aber ich werde es trotzdem versuchen, danke. – ProfK

+0

'asp-validation-summary =" Alle "' entspricht '@ Html.ValidationSummary (false)' und 'asp-validation-summary =" ModelOnly "' entspricht '@ Html.ValidationSummary (true)' –

Antwort

0

In diesem speziellen Fall ich denke, es ist so, wie Sie Fehler in das „Model“ add

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

Beachten Sie, dass die Key ein leerer String ist, ist dies, wie die „ModelOnly“ weiß dass es kein Eigenschaftsfehler ist.

Wenn Sie etwas anderes als ein leerer String es als Eigentum Fehler zählen, und wird nur im Modus „ALL

+0

Ich habe beide Arten von Fehlern, mit Schlüsseln und mit '" "' Schlüsseln (nicht ganz 'String.Empty', aber normalerweise hat es vorher funktioniert). In diesem Fall wird für keine Kombination von Modell- und Nichtmodellfehlern etwas angezeigt. – ProfK

Verwandte Themen