.input-validation-error in ein Textfeld, wenn das Formular für einen fehlgeschlagenen Wert erneut angezeigt wird

8

Ich habe ein Frage , um zu erfahren, warum in meiner Anwendung Textfelder hervorgehoben werden (dh roter Rand und rosa Hintergrund werden auf das Textfeld angewendet), wenn ich Modelbinding zur Validierung des Modells verwende ( TryUpdateModel () ), aber nicht, wenn ich manuell validiere ( ModelState.AddModelError ). Es ist jetzt 2 Tage ohne Antwort. Ich habe alles selbst ohne Erfolg ausprobiert. Also entscheide ich mich, die Frage anders zu stellen.

Wie ich IT verstehe, hier ist, wie ModelBinding eine Anfrage behandelt.

  1. ModelBinding ruft eingehende Werte von httpcontext
  2. ab
  3. Es instanziiert ein Objekt dieses Modells
  4. Versucht, diese Werte für das Objekt
  5. zu analysieren
  6. Wenn mit einer Eigenschaft etwas nicht stimmt, verwendet sie ModelState.AddModelError, um Eigenschaften zu markieren, bei denen etwas nicht stimmt.
  7. Zeigt die Ansicht erneut an

Hier ist meine Frage Wenn das Formular erneut angezeigt wird:

Was wird für die Textfelder getan, deren Werte nicht gültig sind, um hervorgehoben zu werden?

Ich weiß, dass es in Site.css nur wenige Klassen gibt, z. B. .input-validation-error und .field-validation-error , die auf das Textfeld angewendet werden. Vielleicht verwendet ModelBinding intern einen Befehl wie AddCss ("# MyTextBox", ".input-validation-error").

Wenn ich weiß, wie es funktioniert, kann ich es (vielleicht) manuell anwenden und mein Problem lösen.

BEARBEITEN

Wie von @Ian Galloway gefordert, hier ist der Code

%Vor%

Nummer 2 bearbeiten

Ich habe eine der Ansichten gewählt (da alle dasselbe Problem haben). Die Ansicht heißt StateObjectifs.aspx

%Vor%

Danke für Ihre Hilfe.

    
Richard77 13.08.2010, 09:28
quelle

3 Antworten

5

Tatsächlich wird diese Hervorhebung von den HTML-Helfern durchgeführt, die die Textboxen rendern. Es prüft, ob im Modellzustand ein Fehler mit dem angegebenen Schlüssel vorliegt und fügt bei Bedarf die notwendigen CSS-Klassen hinzu.

    
Darin Dimitrov 13.08.2010, 10:09
quelle
4

Ich vermute, dass das Problem, das Sie haben, ist, dass der Schlüsselparameter, den Sie an ModelState.AddModelError übergeben, mit dem Namen des übereinstimmenden Steuerelements im Formular übereinstimmen muss.

(Wie würden Sie ansonsten davon ausgehen, dass die View-Engine weiß, welches Steuerelement in einem Fehlerzustand gerendert wird?)

    
Iain Galloway 13.08.2010 15:43
quelle
0

Die Hervorhebung erfolgt durch CSS, das für die Textbox gilt. Also müssen Sie die CSS unten hinzufügen:

%Vor%

}

    
Qasim Bataineh 17.12.2015 19:39
quelle

Tags und Links