CustomerEntryModelasp-Validierung-für-Tag-Helfer arbeitet nicht für serverseitige Validierungsfehler
[Required]
public String FirstName { get; set; }
CustomerController.cs
[HttpGet]
[Route("Get")]
public IActionResult Get()
{
CustomerEntryModel model = new CustomerEntryModel();
return View("CustomerEntry", model);
}
[HttpPost]
[Route("Update")]
public ActionResult Update([FromForm]CustomerEntryModel model)
{
if (!ModelState.IsValid)
{
return View("CustomerEntry", model);
}
return null;
}
CustomerEntry.cshtml
@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
<form asp-controller="Customer" asp-action="Update" method="post">
<input type="text" asp-for="FirstName" />
<span asp-validation-for="FirstName" />
<input type="submit" value="Submit" />
</form>
Ich schließe die jQuery-Validierungsbibliotheken nicht ein, daher erfolgt die Validierung auf der Serverseite. Wenn ich jetzt die Seite mit dem Vornamen leer übergebe, wird die Aktualisierungsaktion ausgeführt und ich erhalte dieselbe Ansicht, aber ohne Fehler.
Anstelle von <span asp-validation-for="FirstName" />
Tag Helfer, wenn ich den HTML-Helfer @Html.ValidationMessageFor(m => m.FirstName)
verwende, bekomme ich den erforderlichen Fehler für den Vornamen.
Nach meinem Verständnis TagHelper
erweitert das Verhalten der traditionellen HtmlHelper
HTML-freundliche Entwicklung Erfahrung zu bieten. Das heißt, etwas, das mit HtmlHelper
funktioniert, muss mit seinem TagHelper
Pendant arbeiten.
Nach dem ModelState.IsValid
Gespräch kann ich Controller.ModelState
(Instanz ModelStateDictionary
) sehen, die für FirstName
Eigenschaft mit dem Fehler. Die TagHelper
ist jedoch nicht in der Lage, es zu binden.
Sie können die MVC6 Validierung Tag Helfer Detail hier finden,
http://www.davepaquette.com/archive/2015/05/14/mvc6-validation-tag-helpers-deep-dive.aspx
Dies ist ein registriertes Problem im Rahmen https://github.com/aspnet/MVC/issues/4475 –