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?
zeigen Haben Sie versucht, mit 'asp-Validierung-summary =„All“ '? –
@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
'asp-validation-summary =" Alle "' entspricht '@ Html.ValidationSummary (false)' und 'asp-validation-summary =" ModelOnly "' entspricht '@ Html.ValidationSummary (true)' –