السلام عليكم
في الدرس السابق قمت بشرح مفهوم 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
كود:
يتم كتابة الكود الأتي في صفحة 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
وهنا قمت بانشاء كائن object من الصفحة Page1 فهي عبارة عن كلاس ولكي أستطيع أن أستخدم الدالة التي فيها يجب أن أنشأ كائن منها
وستكون النتيجة كما في الصورة التالية
لاحظ أن الكلاس الخاص بالصفحة المطلوبة سيبقى في الذاكرة ولذلك لا يفضل الاكثار من الطريقة هادي
مع العلم أيضا يمكن اعادة قيادة الطريقة سيرفر . ترافسفر بوضع القيمة True بعد الفاصلة التي نلي العنوان كالتالي
كود:
Server.Transfer("index.htm",True)
]
تم الدرس
شكرا لكم