2010-10-13 24 views
6

Tengo una vista ASP.NET MVC con un Beginform, que especifica una acción y un controlador para golpear en enviar. Pero en el envío, quiero llamar a un servicio usando jQuery para obtener algunos datos y luego enviar esos datos con el formulario.JavaScript trabajo antes de enviar ASP.NET MVC formulario

Actualmente tengo un botón de enviar en el formulario donde el evento onclick del botón llama al método de JavaScript. Dependiendo del resultado que obtenga del método, quiero que el formulario se envíe a la acción especificada.

Ahora no puedo hacer que esto funcione. ¿Es la manera correcta de hacer esto o debo hacer una publicación usando jQuery? Creo que sería bueno usar lo que ya he especificado como acción/controlador en el formulario.

Respuesta

11

Creo que la mejor manera es usar el evento 'enviar' en el formulario, porque los usuarios pueden querer enviar el formulario presionando Enter en algunos campos. Supongo, es posible cambiar algunos valores de entrada durante este evento,

jQuery('form#myform').submit(function(e){ 
    //.... 
    if (somevar == false) 
    { 
     // stop submitting form 
     e.preventDefault(); 
    } 
    else 
    { 
     jQuery('input#hiddeninput').val('somevalue'); 
    } 
}) 
+0

excelente respuesta, pero no es exactamente lo que quiero hacer. Quiero comenzar una solicitud de Ajax para algunos datos, y solo en el remitente responsable/redirigir el formulario. Si utiliza el ejemplo anterior, la solicitud no se completará antes de enviar el formulario. –

0

creo que sería mejor para llevar a cabo la tarea de consultar un servicio web externo en una acción del controlador. De esta forma, siempre enviaría el formulario a la misma acción del controlador que consultará el servicio y, en función de los resultados, representaría una vista o redirigiría a otra acción.

Cuestiones relacionadas