تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الدرس الرابع والسبعون - ASP.net
#1
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .


في درسنا السابق جربنا التعامل مع Visual Studio وعمل صفحات ويب غير تفاعليه ، في هذا الدرس سنجرب تجربتنا الأولى مع المواقع التفاعلية .

تجربة ASP.net :
قم بفتح الأدوات Standerd ، قم برسم مربع نص TextBox واداة عنوان Label وزر أمر Button ، في زر الأمر قم بكتابة الكود التالي :
C#:

كود :
Label1.Text= TextBox1.Text;

vb.net:

كود :
Label1.Text= TextBox1.Text


وجرب ... في الواقع لقد قمت بعمل اول صفحة ASP.net لك .

ماذا حدث فعلياً ؟
لو فتحت صفحة ال HTML ستجد أن لديك كود HTML عادي يحتوي على فورم ، في الواقع فإن ما تم هو حدوث Submit إلى السيرفر حيث قام بارسال بيانات الفورم كاملة إلى السيرفر ، وهناك على السيرفر تمت معالجة البيانات وتم اعادة الصفحة التي تحتوي على Label يحتوي على المحتوى Ahmed او اياً كان محتوى مربع النص قبل الارسال ، لو جربت مشاهدة الكود HTML الخاص بالصفحة الناتجة ستجد الجزء التالي من الكود :


كود :
[color=#000080]<p>[/color]
[color=#000080]<span id=[COLOR=#0000ff]"Label1"[/color]>[/COLOR]Ahmed[color=#000080]</span>[/color]
[color=#000080]</p>[/color]
[color=#000080]<p>[/color]
[color=#ff8000]<input name=[COLOR=#0000ff]"TextBox1"[/color] type=[color=#0000ff]"text"[/color] value=[color=#0000ff]"Ahmed"[/color] id=[color=#0000ff]"TextBox1"[/color] />[/COLOR]
[color=#000080]</p>[/color]
[color=#000080]<p>[/color]
[color=#ff8000]<input type=[COLOR=#0000ff]"submit"[/color] name=[color=#0000ff]"Button1"[/color] value=[color=#0000ff]"Button"[/color] id=[color=#0000ff]"Button1"[/color] />[/COLOR]
[color=#000080]</p>[/color]

كما ذكرنا ، تمت معالجة البيانات ، وتم اعادة الناتج إلى Label1 ، اما الاكواد وخلافه فهي في السيرفر فقط .

انواع ارسال البيانات .
في أي Form هناك طريقتين لارسال البيانات هي POST و GET ، في الطريقة الأولى وهي الافتراضية يتم ارسال بيانات ال Form مباشرة ، اما في GET فيتم ارسالها في عنوان المتصفح ، جرب تعديل الفورم الخاص بنا ليصبح بالشكل التالي :


كود :
[color=#ff8000]<form id=[COLOR=#0000ff]"form1"[/color] runat=[color=#0000ff]"server"[/color] method=[color=#0000ff]"get"[/color]>[/COLOR]


قم بتجربة الموقع مرة أخرى ، لاحظ الصورة التالية :


كما ترى ، يتم ارسال كافة محتويات الفورم في العنوان ، طبعاً معظم المتصفحات تضع حدوداً على طول الفورم أما في حالة POST فليست هناك اي قيود .

لكل واحدة منهم طريقة قراءة فيما لو اردت قراءتها منفصلة بالكود ، وهو ما قد نتعرف عليه في مرات قادمة إن شاء الله تعالى .
}}}
تم الشكر بواسطة:
#2
Code Behind :

من ضمن المميزات الجديدة التي ظهرت مع ASP.net عن ASP القديمة هي فصل الكود عن التصميم ، في صفحة ASP Classic قديمة كنت ترى هذا الكود مثلاً :
<%

كود :
v_Id = request.querystring("id")
response.write "[color=#ff8000]<form action=test7.asp?id=" & v_id & " method=post>[/color]"
response.write("[color=#000080]<font color=red>[/color][color=#000080]<b>[/color][color=#000080]<center>[/color]Write your C.V.[color=#000080]</center>[/color][color=#000080]</b>[/color][color=#000080]</font>[/color][color=#000080]<br>[/color]")
%>
[color=#008080]<table>[/color]

[color=#008080]<tr>[/color][color=#008080]<td>[/color]Computer Skills :[color=#008080]</td>[/color][color=#008080]<td>[/color]
[color=#ff8000]<input type=text name=v_cs size=30>[/color][color=#008080]</td>[/color][color=#008080]</tr>[/color]
[color=#008080]<tr>[/color][color=#008080]<td>[/color]Characteristics :[color=#008080]</td>[/color][color=#008080]<td>[/color]
[color=#ff8000]<input type=text name=v_char size=30>[/color][color=#008080]</td>[/color][color=#008080]</tr>[/color]
[color=#008080]<tr>[/color][color=#008080]<td>[/color]Interest's :[color=#008080]</td>[/color][color=#008080]<td>[/color]
[color=#ff8000]<input type=text name= v_inter size=30>[/color][color=#008080]</td>[/color][color=#008080]</tr>[/color]
[color=#008080]<tr>[/color][color=#008080]<td>[/color]Language Skills :[color=#008080]</td>[/color][color=#008080]<td>[/color]
[color=#ff8000]<input type=text name=v_ls size=30>[/color][color=#008080]</td>[/color][color=#008080]</tr>[/color]
[color=#008080]<tr>[/color][color=#008080]<td>[/color]Education :[color=#008080]</td>[/color][color=#008080]<td>[/color]
[color=#ff8000]<textarea name=v_edu cols =30 rows=6>[/color]write your Study Field here[color=#ff8000]</textarea>[/color][color=#000080]</td</tr>[/color]
[color=#008080]<tr>[/color][color=#008080]<td>[/color]Experince :[color=#008080]</td>[/color][color=#008080]<td>[/color]
[color=#ff8000]<textarea name=v_exp cols =30 rows=6>[/color]write your Experiences here[color=#ff8000]</textarea>[/color][color=#000080]</td</tr>[/color]
[color=#008080]</table>[/color][color=#000080]<br>[/color]
[color=#000080]<hr width=75%>[/color]
[color=#000080]<center>[/color]
[color=#000080]<font color=red>[/color][color=#000080]<b>[/color][color=#000080]<center>[/color]Join Demand[color=#000080]</center>[/color][color=#000080]</b>[/color][color=#000080]</font>[/color][color=#000080]<br>[/color]
[color=#ff8000]<textarea name=v_Join cols=40 rows=9 WRAP=physical>[/color][color=#ff8000]</textarea>[/color][color=#000080]<br>[/color][color=#000080]<br>[/color]
[color=#ff8000]<input type=submit value= Continue>[/color]
[color=#ff8000]<input type=reset value=Erase>[/color]
[color=#000080]</center>[/color]
[color=#ff8000]</form>[/color]


أما في ASP.net فاصبحت أكوادك في ملف بامتداد *.cs في حين اصبح التصميم في ملف منعزل بامتداد *.aspx :


وبرغم ذلك ما زلت قادراً على دمجهم في ملف واحد إن احببت ذلك وهي طريقة ما زال يفضلها الكثيرين ، وايضاً قد تحتاج في بعض الاحيان لتطعيم ملف ال aspx ببعض اكواد ال ASP خصوصاً في المشاريع المتشعبة .
}}}
تم الشكر بواسطة:
#3
محتويات مشروع ال ASP.net :

لو قمت بتصفح ال Website Directory الموجود على يمين المتصفح ، ستجد انه يحتوي اضافة لملفات مشروعك على المجلدات التالية - حتى لو لم تكن موجودة فهذه الاسماء القياسية لكتابتها - :

App_Browsers : يحتوي على الملفات التي تقتنص نوع المتصفح وتتعامل مع كل متصفح بناء على امكانياته .
App_Code : يحتوي على ملفات الاكواد والفئات Classes التي تخص صفحات الويب .
App_Data : يحتوي على ملفات قواعد البيانات .
App_GlobalResources : تحتوي على ملفات المصادر *.resx .
App_Themes : يحتوي على الملفات التي تعني بالمظهر والستايلات الخاصة بالمشروع .
App_WebReferences : في حالة وجود بروكسي Proxy اوي اي نوع من ال Web Service يستخدمها تطبيقك يتم وضعها هنا .
Bin : يحتوي على الملفات الجاهزة مثل ملفات ال *.dll والتي يتم استخدامها في برنامجك .
}}}
تم الشكر بواسطة:
#4
Compilation Cycle - دورة الترجمة :

في حالة كون الملف Single File ، يتم ترجمة الملف بكامل محتوياته إلى فئة Class مشتقة من System.Web.UI.Page باسم نفس الصفحة اضافة ل _aspx .


أما في حالة استخدامك لل Mode الخاص بعمل Code Behind ، فسيتم عمل نفس الخطوات ولكن بدمج ثلاث ملفات سوية ، الملف المسمى الذي يحتوي على ال InitializeComponent() يتم عمل Compile له ، ليتم لاحقاً اشتقاق الملف المتكون من CS + ASPX منه وليس من System.Web.UI.Page مباشرة .


*** الصور منقولة ...
}}}
تم الشكر بواسطة:
#5
محتويات System.Web.UI.Page :

تحتوي هذه الفئة على مجموعة من الخصائص والفئات التي ستفيدك في عملك ، منها :

Application : التعامل مع متغيرات التطبيق وما يختص بالموقع .
Cache : للتعامل مع الكاش الخاص بهذا الموقع .
IsPostBack : لمعرفة هل الصفحة يتم عمل Load لها من جديد أم انه يتم عمل Load لها بناء على عملية Submit حدثت من الصفحة .
MasterPageFile : تحديد الصفحة الماستر ، سنتعرف عليها لاحقاً .
Request : ال Http Rquest ، سنتعرف عليها في الدرس التالي .
Response : ال Http Response ، سنتعرف عليها في الدرس التالي .
Server : الوصول إلى الدوال الخاصة بالتعامل مع السيرفر ضمن HttpServerUtility .
Session : التعامل مع ال Session ، تستخدم لتخزين بعض القيم وسنتعرف عليها لاحقاً .
Theme : لتحديد الثيم - لا اعرف ترجمة له - الخاص بهذه الصفحة .
}}}
تم الشكر بواسطة:
#6
التعامل مع Request .

عملية ال Request هي عملية ارسال بيانات إلى السيرفر لتنفيذ مهمة ما عليها ، عملية ارسال البيانات يطلع عليها اسم Request .
مثال : بعد ادخال البيانات الشخصية تقوم بالضغط على زر ( ارسال ) هذا الزر يقوم بمهمة Request .

في العادة ، يتم تعريف ال Action وهي الصفحة التي يتم ارسال البيانات إليها ، كما يتم تحديد اسلوب الارسال Get أو Post التي شرحناها سابقاً وذلك في تعريف الفورم بالشكل التالي مثلاً :

كود :
<form name="form1" id="form1"

كود :
[SIZE=3]action="Process.asp" method = "GET">[/SIZE]
[SIZE=3]...[/SIZE]
[SIZE=3][color=#ff8000]</form>[/color][/SIZE]
في .net نفس النظام ايضاً ، ولكن يتم تعريف الفورم بطريقة مختلفة قليلاً :

كود :
[color=#ff8000]<form id=[COLOR=#0000ff]"form1"[/color] runat=[color=#0000ff]"server"[/color]>[/COLOR]

هذا يعني افتراضياً ان الصفحة التي سيعود فيها هي نفس الصفحة كما ان طريقة الارسال الافتراضية هي POST .
غير ان ASP.net لا تتيح لك الوصول مباشرة إلى Http Rquest ، ولكنها تمنحك هذه الخاصية ضمن System.Web.UI.Page.Request والتي تجد فيها الدوال والخصائص التالية :

ApplicationPath : مسار الموقع على السيرفر .
Browser : نوع متصفح المستخدم ، وهي فئة تحتوي على عدد كبير من المعلومات .
Cookies : معرفة ملفات الكوكيز التي تم ارسالها من قبل المستخدم .
HttpMethod : نوعية الارسال Set او Get .
Form : محتويات الفورم الذي تم ارساله للسيرفر في حالة كون الارسال Post .
QueryString : محتويات الفورم الذي تم ارساله للسيرفر في حالة كون الارسال Get ، حيث يقوم بقراءة محتويات ال URL مباشرة حتى لو لم تكن من ضمن محتويات الفورم .
IsSecureConnection : لمعرفة هل يتم تطبيق اتصال Http آمن ام لا .
RawUrl : معرفة ال URL بدون اي اضافات .
ServerVariables : الوصول والتعامل مع مجموعة متغيرات السيرفر .
UserHostAddress : معرفة IP العميل .
UserHostName : معرفة اسم المستضيف للعميل .
MapPath() : دالة تقوم بتحويل المسار المطلوب إلى مسار حقيقي على السيرفر .
SaveAs() : حفظ محتويات ال http على ملف على السيرفر .

وسنستعرض لبعض الامثلة عن استخدام Request .

قراءة بيانات التي تم ارسالها في Form :

لو كنت تستخدم اسلوب Post :

كود :
[SIZE=3]firstName = Request.Form("txtFirstName")[/SIZE]
ولو كنت تستخدم اسلوب GET :

كود :
[SIZE=3]firstName = Request.QueryString ["txtFirstName"][/SIZE]
فقط لا تنس اضافة ; لتعرف نفسك كونك مبرمج C# .

وبرغم انك تستطيع قراءتها مباشرة باستخدام ال ID كما شرحنا في أول الدروس ، إلا انك ستحتاج لهذه الطريقة في عمليات أخرى اضافية .

معرفة احصائيات المتصفح المرسل :
C#:

كود :
[SIZE=3]string theInfo = "";[/SIZE]
[SIZE=3]string isAOL = string.Format("Is AOL? {0} <br/>",Request.Browser.AOL);[/SIZE]
[SIZE=3]string isActivex = string.Format("Support ActiveX? {0} <br/>",Request.Browser.ActiveXControls);[/SIZE]
[SIZE=3]string isBeta= string.Format("Is Beta? {0} <br/>",Request.Browser.Beta);[/SIZE]
[SIZE=3]string isJava = string.Format("Support Java Applets? {0} </br>",Request.Browser.JavaApplets);[/SIZE]
[SIZE=3]string isCookies = string.Format("Support Cookies? {0} <br/>",Request.Browser.Cookies);[/SIZE]
[SIZE=3]string isVB = string.Format("Support VBScript? {0} <br/>",Request.Browser.VBScript);[/SIZE]
vb.net:

كود :
[SIZE=3]Dim theInfo As String = "" [/SIZE]
[SIZE=3]Dim isAOL As String = String.Format("Is AOL? {0} <br/>", Request.Browser.AOL) [/SIZE]
[SIZE=3]Dim isActivex As String = String.Format("Support ActiveX? {0} <br/>", Request.Browser.ActiveXControls) [/SIZE]
[SIZE=3]Dim isBeta As String = String.Format("Is Beta? {0} <br/>", Request.Browser.Beta) [/SIZE]
[SIZE=3]Dim isJava As String = String.Format("Support Java Applets? {0} </br>", Request.Browser.JavaApplets) [/SIZE]
[SIZE=3]Dim isCookies As String = String.Format("Support Cookies? {0} <br/>", Request.Browser.Cookies) [/SIZE]
[SIZE=3]Dim isVB As String = String.Format("Support VBScript? {0} <br/>", Request.Browser.VBScript) [/SIZE]
}}}
تم الشكر بواسطة:
#7
التعامل مع Response :

العملية العكسية لعملية Request ، حيث تمثل عملية نقل البيانات من السيرفر إلى العميل مرة أخرى ، حيث تشكل الناتج الذي سيتم ارساله للمستخدم ، وتحتوي على الخصائص والدوال التالية :

ContentEncoding : نظام الترميز المستخدم في الناتج .
Cookies و Cache : كما في حالة ال Request ولكن في العملية العكسية .
IsClientConnected : للتأكد من استمرارية اتصال المستخدم حتى اللحظة .

Clear() : مسح كافة محتويات ال Body وال Headers .
End() : انهاء عمليات المعالجة وارسال ما تم انهاءه فقط .
Flush() : ارسال ما تم انجازه للعميل .
Redirect() : تحويل العميل إلى URL جديد .
Write() : كتابة على الصفحة .


مثال على الكتابة باستخدام Write :
C#:

كود :
[SIZE=3]Response.Write("<u>This is javascript code</u>");
Response.Write("<script>alert('hiiiii');</script>");[/SIZE]

vb.net:

كود :
[SIZE=3]Response.Write("<u>This is javascript code</u>")
Response.Write("<script>alert('hiiiii');</script>") [/SIZE]
}}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم