الدرس السادس والسبعون - ASP.net - الجزء الثالث - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : الأقسام التعليمية - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=90) +--- قسم : قسم دورات المنتدى (http://vb4arb.com/vb/forumdisplay.php?fid=113) +---- قسم : دورة .net 2008 . لنبدأ سوياً (http://vb4arb.com/vb/forumdisplay.php?fid=138) +---- الموضوع : الدرس السادس والسبعون - ASP.net - الجزء الثالث (/showthread.php?tid=5674) |
الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 كاتب الموضوع : أحمد جمال
بسم الله الرحمن الرحيم .السلام عليكم ورحمة الله وبركاته . State Management : لعلك ومن خلال تجاربك في تطوير Stand alone Application تدرك انك وقت تعريفك لمتغير ما فسيظل هذا المتغير محتفظاً بقيمته حتى انهاء البرنامج أو الخروج خارج ال Scope الخاص بهذا المتغير ، إلا أن هذا الوضع مختلف تماماً في ASP.net حيث ستضيع قيم المتغيرات مع أول تعديل ، لذا كان من اللازم عليك أن تقوم بتخزين متغيراتك وقيم بحيث يمكنك استرجاعها ، وهو ما سنتعرف على بعض تقنياته في هذا الدرس . يمكنك تخزين القيم بواحدة من ستة طرق اساسية : - View state . - Control state . - Application-Level Variables - Cache . - Session . - Cookies . وسنتعرف عليها خلال هذا الدرس إن شاء الله . الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 Control state : هي الطريقة الأسهل للاحتفاظ بالبيانات ، كل ما عليك هو تغيير القيمة EnableViewState لأي أداة حتى ولو للصفحة ككل ، في هذه الحالة القيم الموجودة في أي من أدواتك لن تتأثر وستظل محتفظة بقيمتها حتى اغلاق الصفحة . لو فتحت ال HTML الناتج عن المتصفح لصفحة تستخدم View State ستجد الجزء التالي حيث يحتفظ ال ViewState بقيمته . كود : [color=#ff8000]<input type=[COLOR=#0000ff]"hidden"[/color] name=[color=#0000ff]"__VIEWSTATE"[/color] id=[color=#0000ff]"__VIEWSTATE"[/color] value=[color=#0000ff]"/wEPDwUKMTIxNDIyOTM0Mg9kFgICAw9kFgICAQ8PFgIeBFRleHQFBWFobWVkZGRkCq8FGqyXBP0pBDpvdnycvM5zSQE="[/color] />[/COLOR] أحياناً ما تحتاج لإن تقوم بملء محتويات قائمة لديك في حدث ال Form_Load ، اغلب الناس تستخدم الاسلوب التالي : C#: كود : ListBox1.Items.Add("Ahmed"); كود : ListBox1.Items.Add("Ahmed") الحل البديل ، هو الاعتماد على خاصية EnableViewState ، واستخدام الخاصية IsPostBack للتأكد من أننا نقوم بملأها في المرة الأولى فقط بالشكل التالي : C#: كود : if (!IsPostBack) كود : If Not IsPostBack Then الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 View state : طريقة أخرى تعتمد على نفس المفهوم ولكن بعيداً عن الأدوات ، حيث يمكنك مثلاً كتابة الكود التالي لتخزين قيمة ما بنفس الطريقة : C#: كود : ViewState["CustomViewStateItem"] = "Ahmed"; كود : ViewState("CustomViewStateItem") = "Ahmed" C#: كود : Label1.Text = (string)ViewState["CustomViewStateItem"]; كود : Label1.Text = DirectCast(ViewState("CustomViewStateItem"), String) الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 Session : طريقة سهلة التعامل جداً ، وبنفس طريقة View State السابقة مع اختلاف التكنيك فقط ، للكتابة : C#: كود : Session["mySession"] = "Ahmed"; كود : Session("mySession") = "Ahmed" C#: كود : string name = (string) Session["mySession"]; كود : Dim name As String = DirectCast(Session("mySession"), String) C#: كود : Session.Remove["mySession"]; كود : Session.Remove("mySession") كود : Session.Timeout = 5 الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 Cookies : طريقة أخرى من وسائل الاحتفاظ بالقيم ولكن عند جهاز العميل ، حيث يتم الاحتفاظ بهذه القيم في ملفات نصية ( في اغلب الاحيان ) ولكن ينبغي مراعاة ان يكون متصفح العميل يسمح بمثل هذه العملية ، وهي الطريقة الأكثر شهرة في الاحتفاظ بمعلومات الدخول والتسجيل في المواقع المختلفة . وهي مشتقة من الفئة System.Web.HttpCookie . سنجرب الآن مثالاً على الكوكيز ، حيث سنقوم بتسجيل اختيار المستخدم من الألوان - اللون الاخضر أو الأحمر مثلاً -، ومع كل تشغيل للموقع في حالة وجود كوكيز يتم استخدام اللون المفضل ، وإلا يتم اللجوء للون الافتراضي وهو الأصفر مثلاً . سنقوم برسم الصفحة اولاً باللون الافتراضي الأصفر : الكود الخاص بها : كود : [color=#000080]<asp:Panel ID=[COLOR=#0000ff]"Panel1"[/color] runat=[color=#0000ff]"server"[/color] Height=[color=#0000ff]"134px"[/color] Width=[color=#0000ff]"446px"[/color] BackColor=[color=#0000ff]"Yellow"[/color]>[/COLOR] C#: كود : string color; كود : Dim color As String C#: كود : if (Request.Cookies["myColor"]!=null) كود : If Request.Cookies("myColor") IsNot Nothing Then الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 Application . طريقة أخرى مشتقة من HttpApplicationState ، ولكن من خلالها لا يتم تخزين البيانات لعميل واحد ، بل يتم تخزين بيانات يمكن ان تصل لجميع العملاء ، ابسط مثال لها هو عدد الزوار والذي ينبغي ان يكون مؤثراً عند جميع العملاء وليس عميل واحد فقط . تحتوي هذه الفئة على الدوال والخصائص التالية : Add() : اضافة عنصر جديد باسم جديد للقائمة . AllKeys : استعراض جميع العناصر الموجودة . Count : معرفة عدد العناصر الموجودة . Lock(), Unlock() : السماح او عدم السماح بتعديل المجموعة . RemoveAll(), Remove(), RemoveAt() : تستخدم لحذف عنصر في نقطة معينة ، أو باسم معين ، أو حذف الكل وذلك على الترتيب . يمكنك اضافة Application جديد بالشكل التالي : C#: كود : Application["Visitors"] = 1; كود : Application("Visitors") = 1 C#: كود : labelVistor.Text=(string)Application["Visitors"]; كود : labelVistor.Text = DirectCast(Application("Visitors"), String) C#: كود : Application["Visitor"]= ((int)Application["Visitor"])+1; كود : Application("Visitor") = CInt(Application("Visitor")) + 1 الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 Cache : تقنية أخرى مختصة بالتطبيق عند جميع أجهزة العملاء ، ولكن يمكنك تحديد فترة معينة فقط لها ، لانشاءها نستخدم الأمر التالي مثلاً : C#: كود : Context.Cache["myCache"] = "hii, my first cache"; كود : Context.Cache("myCache") = "hii, my first cache" C#: كود : string myCache = (string)Context.Cache["myCache"]; كود : Dim myCache As String = DirectCast(Context.Cache("myCache"), String) الدرس السادس والسبعون - ASP.net - الجزء الثالث - RaggiTech - 14-10-12 Global.asax :آخر جزئية لدينا في درس اليوم هي استخدام ملف Global.asax لتخزين متغيرات Global ودوال يمكن الوصول إليها من اي صفحة ، قم باضافة عنصر جديد وقم باختيارها بالشكل التالي : والله الموفق ...والسلام عليكم ورحمة الله وبركاته . |