سؤال

وأنا أفعل تطبيق asp.net مع صفحة واحدة. في هذه الصفحة، لدي usercontrol احد يعرف. هذا usercontrol يحتوي على قائمة (ثلاثة أزرار) و 3 usercontrols محددة جدا. اعتمادا على الزر الذي تم النقر عليه أحد usercontrols ثلاثة أنتقل إلى مرئية صحيحة أو خاطئة.

في هذه usercontrols ثلاث لدي زر ورسالة، وأنا أريد أن تظهر رسالة "انها ليست إعادة النشر" عندما يتم النقر على زر القائمة، وعند النقر على زر في UserControl ستكون الرسالة " نعم، انها إعادة النشر !!! ".

والسؤال هو أن استخدام خاصية "IsPostBack" من في UserControl أو صفحة الرسالة لن تكون "انها ليست إعادة النشر" بسبب الزر الذي تم النقر عليه من القائمة لتظهر في UserControl متداخلة.

وهذا هو هيكل الصفحة:

page
  parent usercontrol
    menu
    nested usercontrol 1
      message
      button
    nested usercontrol 2
    nested usercontrol 3

وأنا أعلم أنه يمكن أن يتم ذلك باستخدام حالة العرض ولكن، هناك طريقة لمحاكاة خاصية IsPostBack أو نعرف متى هو في UserControl إعادة النشر صحيح؟

وشكرا.

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

المحلول

ولدي الحل لهذه المشكلة. عندما يطلق عنصر يتم إرسال حدث إلى ملقم في مجموعة Request.Form، لذلك أنا خلقت عقار في usercontrols متداخلة يتحقق إذا كان هناك عنصر تحكم الطفل (الذي يعرف في في UserControl نفسه) في مجموعة Request.Form:

public bool IsUserControlPostBack
    {
        get 
        { 
            foreach (Control c in Controls)
                foreach(string key in Page.Request.Form.AllKeys)
                    if( c.ClientID == key.Replace('$','_'))
                        return true;

            return false;
        }
    }

ويمكن أن يكون هذا الرمز خاصية في UserControl أو، إذا كان يسمى في الكثير من الأحيان، وهو المتغير الذي تم ضبطه على الحدث OnInit من في UserControl.

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