2016-09-13 3 views
3

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

+0

Dies ist ein registriertes Problem im Rahmen https://github.com/aspnet/MVC/issues/4475 –

Antwort

11

Ich versuche vorschlagen Änderung dieser:

<span asp-validation-for="FirstName" /> 

wie folgt aus:

<span asp-validation-for="FirstName"></span> 

vielleicht wird es einen Unterschied machen

+2

Ich habe das gleiche Problem wie das OP und das funktioniert nicht. –

+0

Die obige Antwort funktionierte für mich! Vielen Dank. – Sam

+0

Ja, überraschenderweise verursacht das selbst schließende Tag das Problem. –

Verwandte Themen