2017-06-21 4 views
0

Hier ist die EigenschaftWie die Fehlermeldung in Validation anzuzeigen und * nur auf Objektebene

[Required(ErrorMessage = "Device Name is required")] 
public string DeviceName { get; set; } 

Ich mag würde die gleiche Wirkung wie in Webformular haben, dh Sie können entscheiden, die Fehlermeldung angezeigt werden in der ValidationSummary, während nur eine * auf der Eigenschaftsebene anzuzeigen.

Ich habe versucht, mit dieser mit wahr und falsch, aber der Fehler immer noch auf Objektebene angezeigt wird, ist zu spielen:

@Html.ValidationSummary(false, "", new { @class = "text-danger" }) 

auch versucht, ein * zwischen Zitat zu setzen aber es hat nicht funktioniert.

@Html.ValidationMessageFor(model => model.DeviceName, "", new { @class = "text-danger" }) 

Vielen Dank für

+0

versuchen Sie, alle Validierungsfehler in der Zusammenfassung statt unterhalb der Eingabe – hasan

+0

zu zeigen Ja. Wie in Webforms. Der Grund ist, dass so viele Felder angezeigt werden. Deshalb, wenn etwas schief geht, kann der Benutzer den Nachrichtenfehler lesen und sofort wissen, wohin er gehen soll. Andernfalls wird die Anzeige der Nachricht neben jedem Feld Auswirkungen auf das Layout haben und den Benutzer zwingen, nach dem Ort des Fehlers zu suchen. – Richard77

+0

Haben Sie versucht, eine benutzerdefinierte HTML-Methode zu verwenden? – hasan

Antwort

0

helfen können Sie versuchen, Ihre benutzerdefinierten ValidationMessageFor Methode zu erstellen. Sie sollten sicherstellen, dass Sie Ihre statische Hilfsklasse im System.Web.Mvc.Html-Namespace deklarieren.

public static class Validator 
{ 
    public static MvcHtmlString YourValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) 
    { 
     TagBuilder span = new TagBuilder("span"); 
     span.InnerHtml = "*" 
     span.AddCssClass("error-box"); 

     return MvcHtmlString.Create(span.ToString(TagRenderMode.Normal)); 
    } 
} 

// html 
// displays all validation errors as a summary 
@Html.ValidationSummary(false, "", new { @class = "text-danger" }) 

// displays "*" for all field validations underneath input 
@Html.YourValidationMessageFor(model => model.DeviceName) 
+0

Mit diesem Helfer wird ein Sternchen auf der Seite angezeigt, auch wenn die Seite nicht übergeben wird. – Richard77

+0

@ Richard77 hast du es versucht? Nach dem Senden des Formulars sollten Fehlermeldungen angezeigt werden. – hasan

+0

Wenn der Ort geladen wird, wird ein Sternchen angezeigt. Ich warte nicht auf die Post-Back-Seite. Ich habe innerhalb der Methode einen Haltepunkt gesetzt. Wird diese "Hilfsmethode" nicht empfohlen, um zuerst zu prüfen, ob die Eigenschaft Teil des Wörterbuchs ist, das alle Eigenschaften (oder etwas Ähnliches) kennzeichnet? – Richard77

Verwandte Themen