Pregunta

Tengo el siguiente código que muestra un formulario de diálogo jquery ui con datos para que el usuario ingrese:

$("#dialog").dialog({
            bgiframe: true,
            autoOpen: false,
            height: 300,
            modal: true,
            buttons: {
                'Create an account': function() {
                    var bValid = true;
                    allFields.removeClass('ui-state-error');

                    bValid = bValid && checkLength(name, "username", 3, 16);
                    bValid = bValid && checkLength(email, "email", 6, 80);
                    bValid = bValid && checkLength(password, "password", 5, 16);

                    bValid = bValid && checkRegexp(name, /^[a-z]([0-9a-z_])+$/i, "Username may consist of a-z, 0-9, underscores, begin with a letter.");
                    // From jquery.validate.js (by joern), contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
                    bValid = bValid && checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. ui@jquery.com");
                    bValid = bValid && checkRegexp(password, /^([0-9a-zA-Z])+$/, "Password field only allow : a-z 0-9");

                    if (bValid) {
                        $('#users tbody').append('<tr>' +
                        '<td>' + name.val() + '</td>' +
                        '<td>' + email.val() + '</td>' +
                        '<td>' + password.val() + '</td>' +
                        '</tr>');
                        $(this).dialog('close');
                    }
                },
                Cancel: function() {
                    $(this).dialog('close');
                }
            },
            close: function() {
                allFields.val('').removeClass('ui-state-error');
            }
        });

si ve, llama a este código cuando tiene éxito:

 if (bValid) {
                        $('#users tbody').append('<tr>' +
                        '<td>' + name.val() + '</td>' +
                        '<td>' + email.val() + '</td>' +
                        '<td>' + password.val() + '</td>' +
                        '</tr>');
                        $(this).dialog('close');
                    }

en lugar de pegarme en este html dentro de la página actual, quiero tomar todos los campos y enviarlos a una acción de controlador. ¿Alguna sugerencia sobre cómo puede construir una acción de controlador directamente desde JavaScript?

¿Fue útil?

Solución

Puede realizar una acción de controlador de la forma en que lo hace habitualmente y devolver texto sin formato llamando al Content método. (También puede devolver JSON, JavaScript, una vista o cualquier otra cosa)

Puedes llamar a la acción usando jQuery AJAX, así:

$.post('/controller/action/whatever', { name: name.val(), email: email.val(), password: password.val() });

Otros consejos

Use jQuery para hacer una publicación parcial de nuevo.

Algo como esto;

$.post("/Controller/jQueryMethod", { param: paramValue }, function(newCommentListHTML) {
  //do something interesting with the html
});

Lo anterior publica un solo parámetro. Luego toma el html devuelto, creado en c # con RenderPartial y lo usa para representar el nuevo control parcial.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top