كيف يمكنني استدعاء إجراء وحدة تحكم مباشرة من وظيفة JavaScript.

StackOverflow https://stackoverflow.com/questions/1816740

سؤال

لدي الرمز التالي الذي يعرض نموذج مربع حوار jQuery UI مع بيانات للمستخدم لإدخال:

$("#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');
            }
        });

إذا رأيت ، فإنه يدعو هذا الرمز عند النجاح:

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

بدلاً من الالتزام في HTML داخل الصفحة الحالية ، أريد الحصول على جميع الحقول وإرسالها إلى إجراء وحدة تحكم. أي اقتراح حول كيف يمكنك بناء إجراء وحدة تحكم مباشرة من JavaScript؟

هل كانت مفيدة؟

المحلول

يمكنك عمل وحدة تحكم بالطريقة التي تقوم بها عادة ، وإرجاع النص الخام عن طريق الاتصال Content طريقة. (يمكنك أيضًا إرجاع JSON أو JavaScript أو عرض أو أي شيء آخر)

يمكنك استدعاء الإجراء باستخدام jQuery Ajax ، مثل هذا:

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

نصائح أخرى

استخدم jQuery للقيام بوستشور جزئي.

شيء من هذا القبيل؛

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

النشر أعلاه paramter واحد. ثم يأخذ HTML المعاد تراجعه ، تم إنشاؤه في C# مع RenderPartial ويستخدمه لتقديم عنصر تحكم جزئي جديد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top