الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Page_Load لصفحة الام لا يشتغل مع كل الصفحات الابن

بدأه زكيري عبد العالي في 12 ديسمبر 2011 · 12 رد · 2,121 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي سؤال حيرني

1- اقوم بجلب معلومات المستعمل من Active Directory و بالطريقة التالية احفظ كل المعلومات في سيشن ودلك في الحدث Page_Load الخاص بالصفحة الام

 protected void Page_Load(object sender, EventArgs e)
    {
        /* Get USER INFO */
        CDB_USER cUSER = new CDB_USER();
        cUSER.Load(Tool.GetUser());
        Session["USER"] = cUSER;

    }

2- اقوم بقراءة المعومات المخزنة في السيشن في جل الصفحات مثلا

tx.text = cUSER.FIRSTNAME;

المشكلة اني حينما افتح صفحة ما x.aspx يخبرني ان الاسيشن = null اي انه لا يقوم بتنفيد التعليمات الموجودة في المتود Page_Load

الا الصفجة Default.aspx لامشكلة فيها حيت يجد المستعمل المخزن في السيشن .

و بمجرد فتح هده الصفحة بعدها الامور تسير كما بجب لان السيشن الان بها المعلومات لا تساوي null

تاكدت من الامر اي عدم تنفيد Page_Load للصفحة الام حينما اضفت

override protected void OnInit(EventArgs e)
    {
        base.OnInit(e);
        Page_Load(null , e);
    }

حينها الامور تشتغل بالا مشكل

ارجوا المساعدة شكرا .

تم تعديل هذه المشاركة بواسطة زكيري عبد العالي في 12 ديسمبر 2011 في 18:31

#2

تأكد أن كود التنقل بين الصفحات هكذا :

Response.Redirect("x.aspx", false);

تم تعديل هذه المشاركة بواسطة AboMoayad في 13 ديسمبر 2011 في 00:58

اللهم أطل عمري وأحسن عملي واختم بالشهادة أجلي

#3

استخدم ال session في ملف ال Global.asax

وقم بتعبئة المتغير في الحدث

    void Session_Start(object sender, EventArgs e) 
    {
        // Code that runs when a new session is started

    }
#4

شكرا للاخوة على الرد

1- تأكد أن كود التنقل بين الصفحات هكذا : Response.Redirect("x.aspx", false);

المشكب ليس في التنقل بين الصفحات لاني بمجرد كتابة URL مثلا

http://XXXXXX.com/SurveyList.aspx

http://XXXXXX.com/Default.aspx

على المتصفح يضهر الخطأ في الرابطة 1 و لا يضهر في الرابطة 2

-----------------------------------------------

2- نعم void Session_Start هي الطريقة الجيدة في حفض و تعبئة المتغيرات لكني استعمل امور كثيري بعد دلك و لا يمكنني استعمال ه\ه الطريقة بالاضافة كونها ليست حل مباشر لمشكلتي فنا اريد لمادا لم يمكن تنفي\ التعليمات المكتوبة في الحدث Page_Load للصفحة الام .

مع العلم ان هدا الحدث من المفروض يتنفد في كل تحديث لصفحة ما قبل Page_Load للهده الاخيرة اي الام اسبق من الابن.

شكرا .

#6

سؤال هل تقوم بفتح الصفحة التي يتم تخزين المتغير بها ام لا

برايي لتلافي المشكلة ولحل جيد استخدم ال master page

واستخدم كودك بحدث التحميل عندها لن يضر فتح اي صفحة لان حدث تحميل صفحة الماستر سيتم تنفيذه

#7
اقتباس
ماذا تقصد بالصفحة الام هل هي Default.aspx ام هي كلاس

برايي لتلافي المشكلة ولحل جيد استخدم ال master page

بالصفحة الام نعم هي master page و التي بدورها تفتح الابن الاول و هو Default.aspx

من المفروض ان الحدث Page_Load الخاض master page ينقد قبل الجميع

شكرا

عدرا ضننت ان الترجمه الصفحة الام معروفة انها master page

#8

تأكد من وجود

<sessionState cookieless="true" />

في ملف web.config

اللهم أطل عمري وأحسن عملي واختم بالشهادة أجلي

#9
اقتباس
عدرا ظننت ان الترجمه الصفحة الام معروفة انها master page

لم تأتي في بالي اطلاقا انها الماستر بيج .

اقتباس
من المفروض ان الحدث Page_Load الخاض master page ينقد قبل الجميع

لا هذا غير صحيح وهذا هو سبب المشكلة من الافضل ان تراجع Page Life Cycle .

والحل المثل حسب اعتقادي هو بناء كلاس بحيث ترثه جميع الصفحات واي كود مشترك يكون في هذا الكلاس (دائما استخدم هذه الطريقة عند بناء المشاريع حتى ولو لم اضع به اي شيء في البداية) ابحث عن asp.net page base class

#10

شكرا على اهتمام الجميع

اقتباس
لا هذا غير صحيح
:wacko:

درستها في السابق لست ادري اين و متى لكن كنت متأكد غريبة . :blush:

شكرا على الرابطه و على فكرة la class de base

#11

هل وجت الحل , نريد أن يستفيد الجميع ؟!!!

اللهم أطل عمري وأحسن عملي واختم بالشهادة أجلي

#12
اقتباس
هل وجت الحل , نريد أن يستفيد الجميع ؟!!!

نعم .حيث كان سبب المشكلة ان حدث page_load للصفحة ينطلق قبل حدث الماستر بيج وبالتالي كانت السيشن فارغة .

وانظر الى ردي السابق للتفاصيل .

#13

السلا م عليكم

عدرا لم ارى الرد الاخير

نعم وجدت الحل و هي فكرة la class de base

ووجد حل اسهل ايضا هو نقل الكود من الحدث Page_Load الدي لا يشتغل داءما و وضعه في الحدث OnInit فهو ينفدا داءما .

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…