Creé un modelo de persona con validación personalizada para asegurar que el usuario ingrese un nombre para la persona. El problema es que el nombre se compone de varios campos y solo necesito que se complete al menos uno de los campos.

Aquí está mi código de validación:

if (string.IsNullOrWhiteSpace(this.Title) && 
    string.IsNullOrWhiteSpace(this.Initals) &&
    string.IsNullOrWhiteSpace(this.Forename) && 
    string.IsNullOrWhiteSpace(this.Surname) && 
    string.IsNullOrWhiteSpace(this.Company))
    yield return new ValidationResult("You must enter a name or company name.", 
        new string[] { "Title", "Initals", "Forename", "Surname", "Company" });

Esperaba ver un solo mensaje de error y 5 campos resaltados, sin embargo, obtengo 5 mensajes de error y cinco campos resaltados. Solo estoy mostrando mensajes de error usando @ Html.ValidationSummary ().

¿Cómo suprimo los 4 mensajes adicionales y aún resalto los 5 campos que son el problema?

0
Jammy 23 nov. 2011 a las 17:41

1 respuesta

La mejor respuesta

Algunas de las soluciones rápidas:

1) Establecer 2 ValidationResult en el código de validación:

...
yield return new ValidationResult("You must enter a name or company name.");
yield return new ValidationResult("any text",
    new string[] { "Title", "Initals", "Forename", "Surname", "Company" });

2) Excluya el mensaje de validación de propiedad del resumen, en su Vista:

@model SomeModel
...
@Html.ValidationSummary(true)
...

Entonces obtendrá un solo mensaje y entradas resaltadas.

3
Yaschur 23 nov. 2011 a las 18:43