2016-05-03 2 views
0

Ich habe eine Validierung Verpackung Sozialversicherungsnummer (ssn) Boxen. Drei verschiedene Boxen, um genau zu sein. Idealerweise möchte ich folgendes Verhalten haben; Wenn eine Box leer ist, sollte sie als fehlende Information hervorgehoben werden, aber nur eine Nachricht, die angibt, dass die SSN fehlt.Wie markieren Sie ein Feld, aber nicht die Validierung Nachricht in fließenden Validierung

Code:

 RuleFor(m => m.Ssnumber1) 
      .NotEmpty() 
      .WithMessage("Social security number required"); 

     RuleFor(m => m.Ssnumber2) 
      .NotEmpty() 
      .When(m => !string.IsNullOrWhiteSpace(m.Ssnumber1)) 
      .WithMessage("Social security number required") 
      .NotEmpty() 
      .When(m => string.IsNullOrWhiteSpace(m.Ssnumber1)) 
      .WithMessage("I don't want a message just highlight"); 
    ................ the third ssn box is just the same ............. 

das Hinzufügen withmessage (String.Empty) oder ein äquivalentes führt zu einem Fehler, weil es eine tatsächliche Nachricht erwartet. Wenn ich jedoch keine Nachricht (keine WithMessage) hinzufüge, wird das Feld nicht hervorgehoben. Wenn ich eine tatsächliche Nachricht hinzufüge, taucht sie auf und überschreibt die Liste der Überprüfungsnachrichten, da eine ssn-Nachricht ausreichend ist.

Ich glaube, ich kann das gleiche Problem wie dieser Kerl haben: Only highlight required fields without showing an error message

Antwort

0

Sie eine Regel ohne eine Nachricht haben könnte und Stil nur den Eingang, der den Fehler aufweist.

Normalerweise in Ihren Ansichten der Eingang, einen Überprüfungsfehler hat, wird die folgende Klasse ‚Input-Validierung-Fehler‘ hat, können Sie einfach um diese CSS-Regel Sie

input.input-validation-error { 
    border: 1px solid red; 
} 

Dies würde in der Ansicht alle Eingaben mit Validierungsfehlern sind rot markiert.

Zusätzlich könnten Sie

.field-validation-error { 
    color: red; 
} 

tun, wenn Sie wollen auch die Validierungsnachricht markieren. Oder machen Sie eine Anzeige: Keine, um sie zu verbergen.

+1

Bitte nicht die gleiche Antwort auf mehrere Fragen posten. Wenn die gleiche Information wirklich beide Fragen beantwortet, dann sollte eine Frage (normalerweise die neuere) als ein Duplikat der anderen geschlossen werden. Sie können dies angeben, indem Sie [wählen, um es als Duplikat zu schließen] (http://stackoverflow.com/help/privileges/close-questions) oder, wenn Sie nicht genügend Ansehen dafür haben, [have a flag] (http://stackoverflow.com/help/privileges/flag-posts) um anzuzeigen, dass es sich um ein Duplikat handelt. Andernfalls stellen Sie sicher, dass Sie Ihre Antwort auf * diese * Frage anpassen und nicht einfach dieselbe Antwort an mehreren Stellen einfügen. –

Verwandte Themen