2016-11-23 1 views
3

Das ist mein Datenmodell ist, und es enthält eine benutzerdefinierte Validierung:asp .net Kern - benutzerdefinierte Validierungsfehler nicht sichtbar angezeigt

public class MyData : IValidatableObject 
{ 
    public int ID { get; set; } 
    public int number { get; set; } 

    [Required] 
    public string text { get; set; } 

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (text.Length < number) 
     { 
      yield return new ValidationResult(
       "Text too short, must be at least: " + number.ToString(), 
       new[] { "number" }); 
     } 
    } 
} 

Dies ist ein Teil meiner Ansicht ist:

<div class="form-group"> 
    <label asp-for="number" class="col-md-2 control-label"></label> 
    <div class="col-md-10"> 
     <input asp-for="number" class="form-control" /> 
     <span asp-validation-for="number" class="text-danger" /> 
    </div> 
</div> 

Der benutzerdefinierte Validierungsfehlertext wird nie angezeigt, wo asp-validation-for sollte (wenn keine Felddaten vorhanden sind, wird die Standardnachricht Das Nummernfeld ist erforderlich.) Wird korrekt angezeigt.

Allerdings, wenn ich hinzufüge Dieses Codesegment in der Ansicht:

<div> 
    @Html.ValidationMessage("number") 
</div> 

... es wird die benutzerdefinierte Fehlermeldung angezeigt werden soll.

Was ist das Problem mit ASP-Validierung-für-Helfer?

Antwort

1

Habe ich es in Ihrem Code heraus Sie

<span asp-validation-for="number" class="text-danger" /> 

Sie verwenden müssen die Schließung Tag hinzuzufügen. Verwenden Sie es wie

<span asp-validation-for="number" class="text-danger" ></span> 

und es werden die Fehlermeldungen direkt unter dem Feld angezeigt.

Verwandte Themen