2012-04-04 5 views
2

Hat jemand eine einfache Möglichkeit, eine CSS-Klasse zu einem HTML-Etikett hinzuzufügen, wenn die Validierung fehlschlägt, vorzugsweise von innerhalb des Modellspublic IEnumerable Validate (ValidationContext-Kontext) überschreiben, nicht mit jQuery oder im Controller.Wie man css zu einer einzelnen mvc Helper-Methode hinzufügt, wenn die Validierung fehlschlägt - aus dem Modell

Ich habe meine validationsummary geben mir die Fehlermeldung Ich möchte nur * neben die fehlgeschlagene Eingabe setzen und seine Beschriftung Text fett und rot.

@Html.LabelFor(model => model.Name) 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Name)<br/><br /> 
    </div> 
+0

Warum Sie nicht verwenden @ Html.ErrorMessageFor (Modell => model.Name) Methode, um die Fehlermeldung in der Ansicht zu machen? Wenn Sie dies in ein div einfügen, können Sie auch Stile hinzufügen, indem Sie div verwenden. –

+0

Ich könnte das machen, aber leider verlangt das Projekt, dass ich den Etikettentext ändere, und abgesehen davon, welche Hilfsmethode ich benutze, beantwortet das immer noch nicht die Frage, wie man das CSS ändert ...? – stuartdotnet

Antwort

1

Wenn Sie noch keine Lösung gefunden, schauen http://weblogs.asp.net/imranbaloch/archive/2010/07/03/asp-net-mvc-labelfor-helper-with-htmlattributes.aspx

Es kodiert ein HTML-Helper Erweiterung LabelFor, die HTML-Attribute unterstützt. Sie können diesen Code als Vorlage verwenden, um sie an Ihre Anforderungen anzupassen. Eine Option wäre, zu erkennen, ob ein Validierungsfehler aufgetreten ist. Vor ein paar Tagen habe ich etwas ähnliches:

public static string IsInvalidFor<TModel, TValue>(
     this HtmlHelper<TModel> htmlHelper,    
     Expression<Func<TModel, TValue>> expression, 
     string cssErrorClass) 
    { 
     if (ValidationExtensions.ValidationMessageFor(htmlHelper, expression) != null) 
      return cssErrorClass; 
     else return ""; 
    } 
0

, wenn Sie es in CS-Datei Modell in diesem Fall tun wollen hängen Sie einfach diesen

  string name = //ur name property//; 
      oppdesc = "";    
      oppdesc += "<span class ="error"+ "\">" +  name+ "</span>"; 

und u definieren Klassenfehler als fett und rot in ur CSS.

+0

Das funktioniert aus so vielen Gründen nicht. Wo stellst du diesen Code ein? In der Validate-Methode? – stuartdotnet

+0

Sie können es einstellen, wenn die Überprüfungsmeldung gesetzt ist – TRR

+0

Also, was machst du mit oppdesc? Wie machst du es deine Kontrolle? Weil in MVC die Eigenschaft eigentlich keine Kontrolle ist. – stuartdotnet