8

He utilizado el método descrito here para localizar mis mensajes de anotación de datos y, básicamente, funciona bien en las publicaciones de formularios normales. También puedo ver el mensaje de validación localizado en el lado del cliente.La validación jQuery no intrusiva ignora el mensaje de validación de datos en MVC3

Sin embargo, el problema se produce cuando tengo una vista parcial que tiene los campos de entrada para validar y se carga utilizando una llamada ajax. Por alguna razón, obtengo el mensaje de validación predeterminado ("Este campo es obligatorio") en lugar de mi mensaje localizado que está establecido en el atributo data-val-required del elemento.

He comprobado lo siguiente:
1. He incluido dos "jquery.validate.min.js" y "jquery.validate.unobtrusive.min.js".
2. Comprobé la respuesta de ajax y contiene el atributo data-val-required con mensaje localizado.

que ya han probado las siguientes soluciones:
1. He intentado analizar la respuesta Ajax (que no funcionaba) como $ .validator.unobtrusive.parse ('forma')
2. de análisis de contenido dinámico para validación como se describe here. Todavía no hay solución.

Tengo un plazo apremiante y esto me preocupa.

+0

¿Está intentando validar inmediatamente después de agregar el contenido de la parcial, o si se presentase el contenido dinámico con normalidad con el resto del formulario? –

+0

El contenido dinámico se envía normalmente con el resto del formulario. – sprisoner

+0

Finalmente tuvo un gran avance. Había dos formularios en mi página, uno en la página de índice y otro en la página parcial. Los botones en cuyo clic se enviaría el formulario estaban en la página de índice. Moví los botones en la página parcial para que esté dentro del elemento de formulario de la página parcial, y ¡ay! funcionó bien Aunque el problema está resuelto, no sé qué causó el problema y cómo se resolvió moviendo los botones en la forma más interna? Mi problema está resuelto, pero si alguien puede ayudarme a entender la causa, podría marcarlo como una respuesta y cerrar esta pregunta. – sprisoner

Respuesta

3

Creo que ya probó esto: stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements - la respuesta de Steve Lamb me ayudó más.

Básicamente, tiene que volver a inicializar el validador cada vez que cambie el contenido de la página, ya que el código de validación genera una lista de seguimiento de los controles que necesita para validar una sola vez, al cargar la página ...

I también parecía tener que agregar un código adicional para pasar y asegurarse de que las entradas se nombraran correctamente. Dame un momento y voy a cavar el código. - mmm, lo siento, ese código era parte de una aplicación cliente, y no puedo publicarlo. No estoy seguro de que habría hecho una diferencia de todos modos ...

+0

Gracias Tieson, ya me había cansado. Sin embargo, lo resolví accidentalmente. Lee mi comentario debajo de la pregunta. Todavía confundió cuál era el problema. – sprisoner

0

Sólo en caso de que alguien caiga en esta cuestión, como los estados de documentación, se requiere que el campo tiene un atributo name:

mandato: Se requiere un atributo 'nombre' para todos los elementos de entrada que necesitan validación, y el complemento no funcionará sin esto. Un atributo 'nombre' también debe ser exclusivo del formulario, ya que así es como el complemento realiza un seguimiento de todos los elementos de entrada. Sin embargo, cada grupo de radio o elementos de casilla de verificación compartirán el mismo 'nombre' ya que el valor de esta agrupación representa una sola pieza de los datos del formulario.

Source

Cuestiones relacionadas