2010-11-12 8 views
38

Estoy utilizando la validación del lado del cliente y me gustaría que el mensaje a continuación se muestre solo cuando tengo un error. Estoy tratando de usar esto como un error general en caso de que cualquier campo no sea válido.
ActualmenteHtml.ValidationSummary (false, "mensaje") siempre se muestra, incluso en la página carga

"* significa que es requerida"

siempre está mostrando incluso antes de la validación.

<%: Html.ValidationSummary(false, "* denotes required field.")%> 

Estoy utilizando el enlace de modelo para realizar la validación en el lado del cliente y MVC.

Respuesta

71

Si utiliza una herramienta de desarrollador en su navegador para inspeccionar el texto de resumen de validación, verá que tiene la clase validation-summary-valid cuando está claro pero validation-summary-errors cuando hay errores de formulario.

Por lo tanto, solo crea una regla css de la siguiente manera;

.validation-summary-valid { 
    display:none; 
} 

y todo debería ser bueno.

+20

¿Por qué no está esto en la hoja de estilo predeterminada? –

+1

¿Y por qué el marco requiere un solo mensaje para resumir modelos válidos e inválidos? –

+2

Bueno, si la validación del lado del cliente está habilitada, no pueden eliminar el div de la página como lo harían para el lado del servidor, ya que el js necesita poder mostrarlo y ocultarlo. Pudieron haber usado display: none para ocultarlo, pero en su lugar han utilizado una clase que le da más control sobre el estilo (a cambio de hacer que configure una regla de hoja de estilo en ambos sentidos). –

4

Creo que el problema es que Html.ValidationSummary tiene que aparecer antes de Html.BeginForm; de lo contrario, el mensaje siempre se muestra.

+1

Esto funcionó para mí. –

+2

Pero si lo hace, pierde la verificación del lado del cliente. –

+3

Mover Html.ValidationSummary sobre Html.BeginForm hizo que dejara de aparecer por completo (MVC 4/Razor). – SushiGuy

0

Inicialmente estaba buscando una propiedad de lista en la carga de la página para que I pensara en pasar un nuevo modelo. Luego apareció el resumen de validación. Cuando cambié mi código de

return View(new myModel) 

a

return View() 

el resumen de validación no aparecía en Obtener. También agregué un cheque nulo en el modelo cuando revisé la propiedad para poder usar el último código.

Cuestiones relacionadas