5

Solicito una vista MVC de ASP.net en un buzón dinámico y la vista contiene campos de formulario que se han marcado con atributos para ser utilizados por el complemento de validadores discretos de JQuery.Vinculación manual de la validación de JQuery después de la solicitud de Ajax

La secuencia de comandos del cliente no está funcionando y mi teoría es que es porque el marco de validación solo se desencadena en la carga de la página que ya pasó en el momento en que se cargó la vista MVC en el Live Box.

¿Cómo puedo dejar que el marco de validación sepa que tiene nuevos campos de formulario para arreglar?

Cheers, Ian.

Respuesta

6

Puede echar un vistazo a following blog post. Y aquí está another one.

+0

Thankas Darin. Con respecto a ese primer enlace, ¿qué/dónde es 'getFunction'? No pude encontrarlo en los archivos de validación o en la fuente jquery. –

+0

El enlace número dos me permitió ponerlo en funcionamiento. Lamentablemente, el resumen de validación no aparece en el cliente. Otra pregunta ... –

1

Otra opción, más bien truco, que funcionó para mí. Sólo tiene que añadir siguiente línea en el comienzo de la vista parcial que está siendo devuelto por la llamada ajax

this.ViewContext.FormContext = new FormContext(); 

Reference

0

tuve un problema similar. Tenía un formulario que usaba las solicitudes de Ajax para volver a mostrar una parte del formulario con diferentes campos de formulario. Solía ​​validación discreta haciendo manualmente en el lado del cliente utilizando el

@Html.TextBoxFor 

para mis cuadros de texto. Por alguna razón la validación funciona cuando se trata de presentar, junto con campos no válidos (es decir, los cuadros de texto quedan delineados en rojo y los mensajes de error correspondientes con el contenido que puse en el atributo

data_val_required 

, por ejemplo.

sin embargo, después de hacer clic en un botón que hace una petición Ajax para modificar el formulario con los campos y luego enviarlo de nuevo, sólo el contorno rojo en los campos no válidos se muestran, pero no hay mensajes de error son prestados. truco

de bjan trabajaron para mí, pero todavía no puedo ver lo que estaba causando el problema. Todo el HTML necesario para c Parece que la validación del lado del cliente estaba allí. No puedo entender por qué los valores del atributo del mensaje de error no se mostrarían.

Todo lo que puedo pensar es que el código de validación de jQuery no hace un segundo intento para verificar los campos del formulario después de realizar un envío.

16
var $form = $("form"); 

$form.unbind(); 
$form.data("validator", null); 

$.validator.unobtrusive.parse(document); 
// Re add validation with changes 
$form.validate($form.data("unobtrusiveValidation").options); 
+1

¡Perfecto! Gracias. – Arvind

1

Por alguna razón tenía que combinar respuestas bjan y dfortun de ...

por lo que poner esto en mi punto de vista:

@{ 
    this.ViewContext.FormContext = new FormContext(); 
} 

Y esto ejecutar esta vez finalizada la llamada ajax:

var form = $("#EnrollmentForm"); 
form.unbind(); 
form.data("validator", null); 
$.validator.unobtrusive.parse(document); 
form.validate(form.data("unobtrusiveValidation").options); 
Cuestiones relacionadas