template por peticiones net mvc modelo español enviar desde datos bootstrap asp jquery asp.net-mvc

por - Eventos jQuery adicionales que envían mi Ajax.BeginForm



jquery y asp net (5)

Este es un tema un poco complicado en el Beta de MVC actual. No puede usar la función "submit ()" porque no activará el controlador onsubmit. En su lugar, debe llamar al controlador onsubmit directamente. El único truco es que debes pasar un argumento a onsubmit () cuando lo llames. Este argumento es lo que se convierte en el parámetro "evento" en el controlador (consulte la "nueva parte Sys.UI.DomEvent (event)"). El parámetro "evento" es utilizado por los scripts de MVC Ajax para cancelar el comportamiento predeterminado, cuando haces clic en el botón Enviar para que las cosas de Ajax puedan suceder ininterrumpidamente.

Entonces, si cambias tu código a esto:

$("#ShippingType, #ViewCart .ddl").bind("change", function() { $("#ViewCartPage form").onsubmit({ preventDefault: function() {} }) });

El evento onsubmit () se activará cuando cambien los campos del formulario. El código crea un objeto de evento "falso" que implementa el método preventDefault () (que es el único que utilizan los ayudantes MVC Ajax) para que no obtenga errores.

Tengo un ASP.Net MVC Ajax.BeginForm que envía y actualiza mi página correctamente cuando hago clic en el botón Enviar.

El problema es que necesito eventos adicionales para hacer lo mismo, como cuando cambian el texto de una entrada. Los eventos adicionales envían correctamente el formulario, pero eluden el javascript de publicación generado en la etiqueta del formulario por Ajax.BeginForm.

Aquí está la etiqueta de formulario generada por Ajax.BeingForm:

<form action="/Store/UpdateCart" method="post" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: ''updatedContent'' });">

Y aquí está el jQuery para enlazar mis otros eventos que necesitan enviar el formulario a través de Ajax:

$("#ShippingType, #ViewCart .ddl").bind("change", function() { $("#ViewCartPage form").submit() });

¿Alguna idea sobre cómo hacer que estos eventos adicionales se activen al igual que yo también?


Decidió usar un formulario regular y luego el complemento jQuery.Form y esto funcionó en 2 segundos. Ojalá hubiera seguido esta ruta originalmente.

var options = { target: ''#updatedContent'', // target element(s) to be updated with server response beforeSubmit: showRequest, // pre-submit callback success: showResponse // post-submit callback }; $(''#ViewCartPage form'').ajaxForm(options);

Hombre que amo jQuery


Cambio -

bind("change", function() { $("#ViewCartPage form").submit() });

a -

bind("change", function() { $("#ViewCartPage form").onsubmit() });


Microsoft probablemente nos separará, pero:

function SubmitMvcAjaxForm(formName) { eval(''var event = new Object(); event.type="keypress"; '' + document.forms[formName].attributes["onsubmit"].value.replace(''(this,'', ''(document.forms["'' + formName + ''"],'')); }


Estaba usando la respuesta de Sichbo en MVC2, pero he descubierto que con MVC3 ya no necesita estas soluciones (es decir, $ (''# yourformid''). Submit (); ahora funcionará para las llamadas ajax).