السلام عليكم
في الدرس السابق قمت بشرح مفهوم ViewState وهي تحتفظ فقط ببيانات الصفحة الحالية
ولكن اذا أردت أن أستخدم قيم الصفحة الحالية في الصفحة التي تليها ...كيف سيتم ذلك
هذا هو درسنا اليوم وهناك عدة طرق لذلك
الطريقة الأولى تسمى Cross-Page Posting
وهي طريقة جديدة وضعت في ال ASP.Net 0.2 وهي تستخدم مع الكونترولز التي تحتوي على الواجهة IButton مثل ( Button, LinkButton , ImageButton )
ونقوم بعمل المثال التالي لتوضيح الفكرة
1- يتم انشاء صفحتين
الصفحة الأولى تتكون من 2 Label و 2 textbox وbutton وتكون اسم الصفحة Page1.aspx
والصفحة الثانية تتكون من Label وتكون اسم الصفحة Page2.aspx كما في الصور الآتية
![]()
ونعطي الخاصية PostBackUrl للزر Enter الموجود في الصفحة الأولى اسم الصفحة الثانية وهنا ستكون القيمة page2.aspx كما في الصورة التالية :
![]()
ويتم كتابة كود في Page2 باانقر على الصفحة في أي مكان فارغ نقرتين بالماوس فيتم ظهور صفحة الكود فيتم كتابة الكود التالي في حدث ال Page-load
![]()
C#
كود:If (PreviousPage != null) { Label.Text = “You came from a page titled “ + PreviousPage.Header.Title; }
ولأنني أحب الفيجوال بيسك دوت نت لن أضع اختاصره بل سأكتب كامل حروفه
Visual Basic.net
والكود السابق يعني أن في حال لم تكن الصفحة السابقة فارغة اطبع لي عنوانهاكود:If PreviousPage IsNot Nothing then Label.Text = “You came from a page titled “ & PreviousPage.Header.Title End If
واذا أردنا أن نستخدم ما كتب في التكست الأول والثاني من الصفحة الأولى الى الصفحة الثانية يتم كتابة الكود التالي
في الصفحة Page1.aspx
بلغة السي شارب C#
عمل property وهي عبارة عن دالة تستخدم لإحضار واعطاء قيم للمتغيرات الprivate
وهنا سنستخدمها لأحضار قيم التكست الأول والثاني من الصفحة الأولى Page1
C#
كود:Public string GetFullName { Get { return FirstNameTextbox.Text + “ “ + LastNameTextbox.Text ; } } وكتابة الكود التالي في الصفحة الثانية في دالة الPage-load If ( PreviousPage != null ) { Page1 prePage = PreviousPage as Page1 ; If ( prePage != null ) { Label.Text = “ You Typed in this “ + prePage.GetFullName ; } }
Visual Basic.net
وهنا قمت بانشاء كائن object من الصفحة Page1 فهي عبارة عن كلاس ولكي أستطيع أن أستخدم الدالة التي فيها يجب أن أنشأ كائن منهاكود:يتم كتابة الكود الأتي في صفحة Page1 Pubic Function GetFullName () AS String Return FirstNameTextbox.Text & “ “ & LastNameTextbox.Text End Function ويتم كتابة الكود التالي في صفحة Page2 في دالة Page-load If PreviousPage IsNot Nothing Then Page1 prePage = PreviousPage as Page1 If prePage IsNot Nothing Label.Text = “ You Typed in this “ & prePage.GetFullName End If End If
وستكون النتيجة كما في الصورة التالية
![]()
![]()
لاحظ أن الكلاس الخاص بالصفحة المطلوبة سيبقى في الذاكرة ولذلك لا يفضل الاكثار من الطريقة هادي
مع العلم أيضا يمكن اعادة قيادة الطريقة سيرفر . ترافسفر بوضع القيمة True بعد الفاصلة التي نلي العنوان كالتالي
]كود:Server.Transfer("index.htm",True)
تم الدرس
شكرا لكم


رد مع اقتباس
