2010-04-19 21 views
5

Estoy utilizando la función de validación de cliente de la estructura MVC 2.0 (con Html.ValidationMessageFor() y Html.EnableClientValidation()).Validación de cliente ASP.NET MVC con vistas parciales y Ajax

Todo está bien, cuando uso la validación de forma simple.

Pero cuando llego a esta forma a través de jQuery Ajax

$.get('PathToMyForm', function(htmlResult) { 
    $('selector').html(htmlResult); 
}); 

validación del cliente no funciona. ¿Por qué?

+0

* ¿Cómo * no funciona? Los nuevos campos no están validados? Nada está validado? ¿Dónde está el código de validación? En el parcial? En la página que contiene? Un poco más de código y explicación sería útil. – tvanfosson

+0

tvanfosson, Tengo un modelo con el atributo [Obligatorio]. En un escenario común (sin AJAX, solo Html.RenderPartial) la validación del cliente funciona bien: si escribo cadena vacía en el cuadro de texto y me enfoco en otro cuadro de texto, recibo un mensaje de validación. Pero con AJAX, no recibo este mensaje. – griZZZly8

Respuesta

0

He tenido problemas con la validación de MVC y vistas parciales también. Lo resolví usando jquery.validate.js en lugar de la validación de cliente incorporada. Puedes probarlo.

+0

jQuery.validate no puede ver mi modelo. Quiero definir reglas de validación en las clases modelo. – griZZZly8

+0

Puedes hacerlo. Consulte ASP.NET MVC Futures http://aspnet.codeplex.com/releases/view/41742 –

0

¿Quizás jQuery no está evaluando el código de JavaScript en la respuesta de Ajax?

Intente utilizar la propiedad tipo de datos en la llamada Ajax,

$.get('PathToMyForm', {dataType 'html'}, function(htmlResult) { 
    $('selector').html(htmlResult); 
}); 

Desde el jQuery documentation:

tipoDatos defecto: suposición inteligente (XML, JSON, script o HTML)

El tipo de datos que espera del servidor. Si no se especifica ninguno, jQuery intentará obtener los resultados de manera inteligente, basándose en el tipo MIME de la respuesta (un tipo MIME XML arrojará XML, en 1.4 JSON generará un objeto JavaScript, en 1.4 script ejecutará el script, y cualquier cosa else será devuelto como una cadena).

+0

Rafael Mueller, gracias por su respuesta, pero no me ayuda. He incluido la alerta ('scripts test') en mi vista parcial - funciona. Pero todavía tengo problemas con la validación. – griZZZly8

Cuestiones relacionadas