2011-12-20 17 views
11

Sto tentando di utilizzare IValidatableObject per convalidare i valori del modulo l'uno rispetto all'altro. Vorrei assegnare un ValidationResult a un campo specifico in modo da poter visualizzare un messaggio di errore accanto a quel campo.Assegnare ValidationResult al campo specifico?

Ad esempio, potrei desiderare che gli utenti inseriscano le password due volte e che la convalida fallisca se il secondo non è uguale al primo, quindi il messaggio di errore viene visualizzato accanto al secondo.

Tuttavia a quanto pare, posso assegnare errori a livello di modello solo in questo modo; per livello di modello intendo un errore che verrà visualizzato con @Html.ValidationSummary(true) e che non è legato a un campo modello specifico.

Ho esaminato la dichiarazione per ValidationResult, e non vedo alcuna proprietà o metodo che sembra utile per questo. Quindi - qualcuno può mostrarmi un modo per assegnare un ValidationResult a un campo specifico all'interno di un metodo Validate di un oggetto IValidateableObject, o confermare che NON è possibile farlo?

(NOTA: NON sto cercando un work-around. PER FAVORE - nessuna risposta, ad esempio, sui filtri che si occupano dell'esempio della password. Voglio solo sapere in particolare sui limiti di IValidateObject.)

risposta

23

È possibile, ValidationResult ha un sovraccarico che accetta IEnumarable di stringa, proprietà da associare.

Un esempio.

 public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (Password != PasswordConfirmation) 
      yield return new ValidationResult("Password confirmation must match", new[] { "PasswordConfirmation" }); 
    } 
+1

Sì! L'avevo appena trovato e stavo per postare la mia risposta – Faust

Problemi correlati