ASP.Net UpdatePanel ImageButton يتسبب في أن "this._postbackSettings.async فارغ أو ليس كائنًا"

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

سؤال

لقد تلقيت هذا الخطأ في لوحة التحديث داخل popupControlExtender الموجود داخل DragPanelExtender.

أرى أن الكثير من الأشخاص الآخرين لديهم هذه المشكلة ولديهم العديد من الإصلاحات التي لم ينجح أي منها بالنسبة لي.

أود أن أسمع تفسيرًا منطقيًا لسبب حدوث ذلك وطريقة مضمونة لتجنب مثل هذه المشكلات في المستقبل.

لقد وجدت أنه مثل الآخرين يؤكدون أن هذا الخطأ لا يحدث عندما يكون المشغل هو LinkButton بدلاً من ImageButton، وما زلت أتساءل عما إذا كان لدى أي شخص تفسير.

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

المحلول

أفضل تخميني هو أن UpdatePanel غير قادر على كتابة خاصية "غير متزامنة" مخصصة لطلب إعادة النشر بشكل صحيح.من المحتمل أن يكون هذا بسبب الحظر من أحد عناصر التحكم التي تحيط به (شعوري الغريزي هو أنه popupControlExtender - يميل إلى أن يكون له سلوك غريب مع لوحات التحديث، حيث أنه يهدف إلى إدارة الأحداث الموجودة بداخله لأغراض العرض/الإخفاء).

أوصي إما بإزالة لوحة التحديث وطرح الحل الخاص بك لتلبية احتياجات عملك المحددة لوجوده هناك، أو تنفيذ البرنامج النصي المنبثق الخاص بك (ربما يكون من الأسهل قليلاً كتابته).

بالمناسبة، بالنسبة لبعض المعلومات الأساسية، فإن "this._postbackSettings.async" هو إطار عمل AJAX.NET الذي يحاول معرفة ما إذا كان هذا استدعاء غير متزامن أم لا.قد تتمكن من التغلب على ذلك عن طريق تعيين هذا برمجيًا قبل إرسال إعادة النشر (التقط حدث إعادة النشر وأضف الحقل إلى طلب إعادة النشر إذا لم يكن موجودًا بالفعل).

مجرد بعض الأفكار...لا أعتقد أن هناك إجابة "التوصيل والتشغيل" لهذا السؤال!

نصائح أخرى

لقد واجهت نفس المشكلة ولم أجد أي حل مرضٍ حتى انتهى بي الأمر http://siderite.blogspot.com/2009/02/thispostbacksettingsasync-is-null-or.html الذي يفعل بالضبط ما أريد.

فقط لتجنب المشاكل المتعلقة بالروابط الميتة المحتملة في المستقبل، إليك الكود:

var script = @"
if (Sys &&
    Sys.WebForms && Sys.WebForms.PageRequestManager &&
    Sys.WebForms.PageRequestManager.getInstance) 
{
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    if (prm &&
       !prm._postBackSettings)
    {
        prm._postBackSettings = prm._createPostBackSettings(false, null, null);
    }";

ScriptManager.RegisterOnSubmitStatement(
    Page, 
    Page.GetType(), 
    "FixPopupFormSubmit", 
    script);

في حالة الإرسال دون تعيين _postBackSettings، فإنه يتم إنشاؤه، مما يتسبب في اختفاء استثناء المرجع الفارغ حيث يصبح _postBackSettings.async متاحًا بعد ذلك.

أتمنى أن يساعدك هذا،

ز.

يؤدي تعيين "EnablePartialRendering" إلى false في عنصر التحكم ScriptManager إلى منع حدوث الخطأ، ولكنه ليس الحل الأمثل.قد يكون فقدان ميزة العرض الجزئي مشكلة كبيرة، اعتمادًا على التطبيق الذي تستخدمه.

للعلم فقط، لم أكن أفعل نفس الشيء تمامًا مثل الأشخاص الآخرين الذين رأوا الخطأ.لدي PopupControlExtender، وهو عبارة عن قائمة اختيار.لقد أضفت رابط "تحديد الكل" باستخدام طريقة جافا سكريبت لتحديد/إلغاء تحديد الكل برمجيًا.أنا لا أستخدم زر Imagebutton.لم أشاهد الخطأ قبل إضافة جافا سكريبت والآن حتى بعد إزالته يظل الخطأ قائمًا.يجب أن يكون هناك تغيير آخر أفتقده.

آمل أن يساعد هذا شخص ما ...

--غير لامع

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