0% found this document useful (0 votes)
385 views13 pages

3 - Asp

يقدم هذا المستند معلومات عن ASP.NET باعتباره إطار عمل يجمع بين عدة لغات مثل HTML وCSS وJavaScript. كما يناقش العناصر الرئيسية لهذا الإطار مثل صفحات المصدر والكود الخلفي وصفحات الماستر.

Uploaded by

Amir Elhendy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
385 views13 pages

3 - Asp

يقدم هذا المستند معلومات عن ASP.NET باعتباره إطار عمل يجمع بين عدة لغات مثل HTML وCSS وJavaScript. كما يناقش العناصر الرئيسية لهذا الإطار مثل صفحات المصدر والكود الخلفي وصفحات الماستر.

Uploaded by

Amir Elhendy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

‫‪ASP .

NET‬‬ ‫‪Cource By eng‬‬


‫‪Ahmed rabie‬‬

‫هى ليست لغة برمجية وانما هى اطار عمل يجمع بين لغات برمجية عدة مثل ( ‪) Html – CSS – JavaScript‬‬

‫أوال ‪ :‬لغة الـ ‪ Html‬وهى اختصارـ لـ ‪HyperTextMarkupLanguage‬‬


‫‪ ‬دورها هو بناءـ الهيكل العام للصفحات من خالل عرض المحتوى على شكل صور – نصوص – جداول وغيرها‬
‫‪ ‬لغة الـ ‪ CSS‬وهى اختصارـ لـ‪Cascading Style Sheet‬‬
‫‪ ‬هى لغه تسمح بالتحكمـ فى مظهر وشكل الصفحاتـ بمعزل عن المحتوى اى تحتوي على التنسيقات العامة للصفحة‬
‫‪ ‬وهى لغة تكميلية لـ ‪Html‬حيث يقوم ‪ Html‬بعرض محتوى الصفحة وال‪CSS‬تقوم بالتحكم فى خصــائص المحتــوي مثــل االلــوان‬
‫والخطوط وال ‪ Positions‬وخصائص اخري‬

‫ثانياـ ‪:‬لغة الـ ‪BootStrap‬‬


‫‪ ‬وهو فريم وورك يضم مجموعه من مكتبات ال ‪ CSS‬للتحكم فى شكل ومظهر الصفحة‬
‫‪ ‬يحتوي مكتبات ‪ JavaScript‬لتسهيل التفاعل مع الصفحة عند المستخدم ويتستخدم‬
‫‪ ‬يستخدم لتصميم صفحاتـ تتكيف مع شاشاتـ ‪Ipad – Iphone - Pc‬‬

‫ثالثاـ ‪ :‬لغة الـ ‪JavaScript‬‬


‫‪ ‬تســمح بالقيــام بعمليــاتـ تفاعليــه عنــد المســتخدم حيث يتم تنفيــذها على جهــاز المســتخدم وليس على الســيرفرـ للتحقــق مثال من‬
‫المدخالت والحصول على معلومات من جهاز المستخدم وغير ذلك‬

‫رابعا ‪ :‬مكتبة الـ ‪JQuery‬‬


‫‪ ‬هى عبــارة عن مكتبــة يتم تضــمينهاـ داخــل المشــروع وهى مبرمجــه بلغــة ال ‪ JavaScript‬وتســتخدم لعمــل تحســيناتـ على‬
‫الصفحةوالتعاملـ مع بعض ادوات الصفحة‬

‫خامسا ‪ :‬الـ ‪ Ajax‬وهى اختصار لـ ‪Asynchronous JavaScript&XML‬‬


‫‪ ‬دورها هو ارسال البيانات من والى السيرفر دون الحاجه الى اعادة تحميل الصفحة‬

‫سادسا ‪ :‬الـ ‪ Asp.Net‬وهى تعنى ‪Active Server Pages‬‬


‫‪ ‬هى ليستـ لغة برمجية وانما هى اطار عمل يجمع لغاتـ برمجية عديدة مثل ‪ Html – CSS – JavaScript‬واحدى لغات الدوت‬
‫نت اما ‪ C# .Net‬او ‪VB.Net‬‬
‫‪ ‬تستطيع انشاء مشاريع الويب بمختلف انواعها مث ‪ WebSite‬و ‪ WebApplications‬و ‪WebService‬‬
‫‪ ‬تسمح ‪ Asp.Net‬بتقسيم المشروع الى صفحاتـ‬
‫صفحة ال ‪ Source Code‬ويكتب فيها اكواد ال ‪ Html‬و ‪ CSS‬و ال ‪JavaScript‬‬
‫صفحة ال ‪ Behind Code‬ويكتب فى الكود الخاص باحدى اللغات البرمجية ‪ #C‬او ‪VB‬‬
‫‪ ‬تدعم برمجة قواعد البيانات وحماية عالية من خالل اضافات جاهزة‬

‫عشان الـ ‪ Browser‬ال يفهم اال لغة ال ‪ HTML‬فلو احنا انشأناـ <‪ "asp:button‬فان ال ‪ Browser‬لن يفهمــه الن ال ‪asp‬تم‬ ‫‪‬‬
‫تنصيبهاـ على السيرفر وليس عند المستخدم لذلك عند انشاء االدوات يجب اعطاءها خاصية ‪ "runat="server‬وممكن نعطيها‬

‫‪1‬‬
‫ايضا لعناصرـ الـ ‪ Html‬التى تم انشاءهاـ بواســطتى على اى محــرر ‪ HTML‬اخــر وعنــدما نعطى خاصــية الـ ‪"runat="server‬‬
‫فانه يمكن التعامل مع عنصر ال ‪ html‬من خالل الـ ‪#C‬‬
‫اى ‪ control‬على الفورم معمول له ‪ "runat="server‬فالبد ان يكون الفورم االب لها نفس الخاصية ‪"runat="server‬‬ ‫‪‬‬
‫عشان اعرف الصفحةـ انى هستخدم كود لغه معينه مثل ال ‪ #c‬او ‪ vb‬بنكتب الوسم التالىـ فـوق وسـم ال <‪ >html‬وهـذا الوسـم‬ ‫‪‬‬
‫هو <‪>%"#page language="c%‬‬
‫ممكن عشان انسق االدوات تحت بعضها اعملهاـ فى جدول بدل التنســيق بالـ ‪ css‬ده لــو عنــدى فــورم فيهــا ادوات مثال واعطيهــا‬ ‫‪‬‬
‫كالســات فى الخاصــيةـ ‪ CssClass‬بحيثـ انى اركــز على الشــكل الجمــالى اكــتر من التركــيز على االمــاكن والطــول والعــرض والـ‬
‫‪ position‬وكده‬
‫عشان اكتب كود ‪ #c‬داخل صفحة الـ ‪html‬‬ ‫‪‬‬

‫>‪<%page language="c#"%‬‬
‫وداخل وسم ال <‪ >head‬هنكتب االسكربت كالتالى‬
‫>"‪<script language="c#" runat="server‬‬
‫} { )‪Void BtnClick(object sender , eventargu e‬‬
‫>‪</script‬‬
‫الـ ‪ post‬والـ ‪PostBack‬‬ ‫‪‬‬
‫‪ ‬عندما يحدث طلب من الـ ‪ Client‬الى الـ ‪ Server‬فهذا يسمى ‪Post‬‬
‫‪ ‬عندما يحدث رد من الــ ‪ Server‬على الـ ‪ Client‬فهذا يسمى ‪PostBack‬‬
‫‪ ‬الفترة التى يكون الطلبـ فيها موجود على الـ ‪ Server‬تسمى ‪Posted‬‬
‫الـ ‪ Web Devoloper‬هو الذى يعمل بال ‪ #c‬لتكويد الصفحة اى الـ ‪Back-End‬‬ ‫‪‬‬
‫الـ ‪ Web Designer‬هو الذى يصمم شكل الصفحة باستخدام ال ‪ css‬و ‪ html‬وهو ال ‪Front-End‬‬ ‫‪‬‬
‫الـ ‪ Master Page‬والفكــره منهــا انى بثبت الـ ‪ header‬وال ‪ menu‬الجانبي ـةـ والـ ‪ footer‬ونغــير فى المحتــوى ‪content‬‬ ‫‪‬‬
‫وامتدادها ‪ master.‬وهى بمثابة اب لكل الصفحات وكل الصفحاتـ بتعمل منها ‪ inhert‬وبيكون امتاد الصفحاتـ هو ‪aspx.‬‬
‫المكان اللى هسمح فيه للصفحات انها تغير فى المحتوى هضع فيه اداة ‪ContentPlaceHolder‬‬
‫وده معناه ان اى صفحة ‪ aspx‬هتعمل ‪ inhert‬من الـ ‪ master‬فلن تستطيع التعــديل على الـ ‪header-sideMenu-‬‬ ‫‪‬‬
‫‪ footer‬بينما تستطيع التعديل على الـ ‪contentPlaceHolder‬‬
‫والخطوات عشان اعمل كده كالتالى‬ ‫‪‬‬
‫هننشا صفحة من نوع ‪Master Page‬‬ ‫‪‬‬

‫ثم نصمم بداخلها ال ‪ header‬وال ‪ footer‬ونحدد مكان ال ‪ contentplaceholder‬كالتالى‬ ‫‪‬‬

‫‪2‬‬
‫ثم نقــوم باضــافة ‪ page‬من نــوع ‪ webform‬واثنــاء انشــاءها نعمــل ‪ check true‬على ‪select master page‬‬ ‫‪‬‬
‫كالتالى‬

‫ثم نقوم باختيار ال ‪ master page‬التىـ سوف ترث منها‬ ‫‪‬‬

‫‪ ‬وهنا هذه الصفحةـ الجديده ‪ default.aspx‬هتورث ال ‪master page‬‬


‫الـ ‪ Nasted Master Page‬وهى ان ترث صفحة من نوع ‪ master‬من صفحة اخرى من نوع ‪ master‬ايضاـ وعشان اعمل‬ ‫‪‬‬
‫كده هنشأ صفحة ‪ master‬واختار ال ‪ select master page‬الختيار ال ‪ master page‬االب الخاصهـ بها وهنا الجزء اللى‬
‫هتقدر ال ‪ master page‬االبن التحكم بها هى اللى معمول لها ‪ content place holder‬فى ال ‪ master page‬االب‬

‫انواع االدوات التى توضع على الصفحةـ اى ال ‪controls‬‬ ‫‪‬‬

‫‪3‬‬
‫ الخـاصـ‬browser ‫> حيث انهــا مفهومـه من جـانب ال‬div> - <p> - <input< ‫ وهى مثـل ال‬User side controls 
‫بالمستخدم‬
user side controls ‫> وايضا يشمل ال‬----asp:textbox< ‫ مثل‬Server side controls 
‫ فى السى شارب كالتالى‬asp.net ‫حيث يتم استيراد مكتبة‬ 
Using system.web.ui.htmlcontrols
htmlbutton – htmlform – htmlimage – htmltable ‫ مثــل‬html5 ‫ وهى مكتبة تحتوى على جميع عناصر ال‬
#c ‫ فهــو جــدول مــبرمج بــال‬#c ‫ وعملــه وبرمجتــه من خالل ال‬html ‫وهكذا ممكن استخدمها مثال لعــرض جــدول من نــوع‬
html ‫ولكنه من نوع‬
innerhtml – innertext ‫ الفرق بين القيم‬
css ‫ لتنسيق النص واعمل تاثيراتـ بال‬html ‫ بقدر اضيف فيه نص ووسوم‬:Innerhtml 
‫ فسيتم عرضه كنص عادى جدا‬html ‫ بقدر اضيف فيه نصوص فقط ولو كتبت وسم‬:Innertext 
#c ‫ من خالل ال‬html ‫ انشاء جدول‬
Using system.web.ui.htmlcontrols;
‫ثم فى الحدث المطلوب فيه انشاء الجدول يكون كالتالى‬ 
Htmltable htable=new htmltable();
Htable.cellpadding=5;
Htable.cellspacing=5;
Htable. bgcolor ="red";
For(int row=0;row<5;row++)
{
Htmltablerow hrow=new Htmltablerow ();
If(row%2=0){hrow.bgcolor="green";}
For(cellNo=0;cellNo<5;cellNo++)
{
htmltablecell hcell=new htmltablecell();
hcell.innerhtml="<span>amir</span>";
hrow.control.add(hcell);
}
Htable.controls.add(hrow);
}
This.controls.add(htable);
‫ ويتــوجب وجودهــا امــام‬Validation ‫ داخــل تــاب‬ToolBox‫ وهى مجموعــة ادوات موجــودة فى ال‬Validate Controls ‫الـ‬ 
‫ادوات االدخال الواجب ادخالها للتاكد من ادخال بياناتـ وبشكل صحيح واالدوات واهم خصائصها كالتالى‬
1 - RequiredFieldValidator
ErrorMessage : You Must Fill User Name Field
Text : *
ControlToValidate : txtUsername
2 - compareValidate
ErrorMessage : Passwords Must Be Same
Text : *
ControlToValidate : txtpwdconfirm
ControlToCompare : txtpwd

3 - RegularExpresstionValidator
4
ErrorMessage : Email Like [email protected]
Text : *
ControlToValidate : txtEmail
ValidationExpression : Choose Format
4 - RangeValidator
ErrorMessage : Range From 5:10
Text : *
ControlToValidate : txtAge
Type : integer
minimumValue : 5
maximumValue : 10
5 - validationSummary
‫ هى اداة يظهر بها ملخص بكل االخطاء فى حال الضغط على احد مفاتيح الصفحة‬
‫اعمــل لكـل‬: ‫ على الفورم وعاوز اقسم مجموعات ولكل مجموعـه مفتــاح يالحـظ ســالمه االدخــال‬validation tools ‫ لو عندى‬
txtemail ‫ بتــوع ال‬validators ‫ وال‬txtEmail ‫ و‬btnsaveEmail ‫ مثــل‬. ‫ الخــاصـ بيهــا‬validationGroup ‫مجموعة ال‬
validationGroup : EmailOnly ‫واعملهم ال‬
6 - CustomValidator
: ‫ الكود نوعين‬
User Side ‫ وده بيتم تنفيذه عند المستخدم اى فى الـ‬JavaScript 
Server Side ‫ وده كود بيتم تنفيذه على السيرفر اى‬#C 
‫ الى اداه يجب عملهــا على‬validate ‫ عند المستخدم الى سبب من االســبابـ لــذلك عنــد عمــل‬JavaScript ‫ قد يتم تعطيل الـ‬
#C ‫ و الـ‬JavaScript ‫الكودين الـ‬
#C ‫ من خالل الـ‬Validate ‫ عمل‬
‫ وده بيتم تنفيــذه عنــد الضــغط على المفــاتيح الخاصــهـ‬ServerValidate ‫ اســمه‬CustomValidator ‫ فى حــدث للـ‬
‫بالفورم هنكتب فيه التالى‬
If (int.parse(args.value)%5==0)
{args.isvalid=true;}
Else{arg.isvalid=false}
false ‫ لكنه سيظهر فى حالة الـ‬customvalidator ‫ فلن يظهر ال‬true ‫ فى حالة الـ‬
JavaScript ‫ من خالل الـ‬Validate‫ عمل نفس الـ‬
<script type="text/javascript">
Function ValidateNo (osource , args) {
if(args.value % 5==0) { args.isvalid=true;}
Else{args.isvalid=false}}
</script>
‫ يوجد خاصية نعطيها قيمه الخاصيةـ المعموله بالجافا سكريبتـ‬customValidtor ‫ثم فى اداة الـ‬ 
ClientValidationFunction:ValidateNo
prev ‫ و‬next ‫ واالنتقال فيما بينهاـ بمفاتيح‬view ‫ لعمل اكثر من‬MultiView ‫ ادة الـ‬
‫ ونجعــل‬view ‫ ونضــع اكــثر من واحــد لعمــل اكــثر من‬view ‫ على الفورم ثم نضيف بــداخلها اداة ال‬multiview ‫ نضع اداة ال‬
‫ البداية‬view ‫ وهو‬multiview ‫ وذلك لالداه‬activeViewIndex : 0‫خاصية ال‬
text : Next ‫ نضع مفتاح ونكتب فى خاصية الـ‬view1 ‫ فى الـ‬
Previous ‫ واالخر‬Next ‫ نضع مفتاحين احدهم‬view2 ‫ فى الـ‬
Finish ‫ واالخر‬Previous ‫ نضع مفتاحين احدهم‬view3 ‫ فى الـ‬
CammandName: NextView ‫ نجعل خاصية الـ‬Next ‫ فى مفاتيح الـ‬
CommandName: PrevView ‫ نجعل خاصية الـ‬Previous ‫ فى مفاتيح الـ‬

5
‫‪ ‬الـ ‪ Wizard Control‬وهى اداه جاهزة وتشبه فى عملها ال ‪ multiview‬ولكنها يوجـد بهــا الخطــوات ومفـاتيح ال ‪ next‬وال‬
‫‪previous‬‬
‫‪ ‬ولعمــل تنســيق على الـ ‪ steps‬هنضــغط على الســهم الصــغير المالــك لالداه ونختــار ‪add or remove wizard steps‬‬
‫ونضيف ونحذف ونغير اسماء وهكذا وباضافة ‪ step‬هتالقى االداه تلقائياـ اضافت ‪view‬‬
‫‪ ‬ومن ممــيزات االداه انهــا تقســم االداه الى اكــثر من جــزى ليتم تنســيق كــل جــزء على حــده من خاللص الخصــائص كــاللون‬
‫والخلفية وممكن نعطيه ‪ cssClass‬لتنسيقه بالـ ‪css‬‬
‫‪ ‬الـ ‪ FileUploader‬وهى اداه لرفع الملفــات على الســيرفر هى اداه نضــيفهاـ على الفــورم ونضــيف ‪ button‬ونســميه ‪upload‬‬
‫ونعمل ‪ folder‬لرفع الصور فيه وليكن مسارة "‪ "c:\\imgs‬وفى ال ‪ #C‬نكتب‬
‫;"‪String DirRoot=@"c:\imgs‬‬
‫;‪String GetFileName = FileUpload1.FileName‬‬
‫;‪String FullPath = DirRoot+"\"+ GetFileName‬‬
‫)‪Or = system.io.path.compine(DirRoot, GetFileName‬‬
‫;)‪FileUpload1.PostedFile.saveAs(FullPath‬‬
‫ولو فولدر الحفظ فى نفس مسار المشروع هنكتب‬ ‫‪‬‬
‫;)"‪String DirRoot=server.mapPath(".upload‬‬

‫‪6‬‬
‫ وبعــد تظبيـطـ‬AdRotator ‫ لعمل بانر لالعالنات يتغير بشكل عشوائي عند كل مره يتم فتح الصفحه فيها وذلك من خالل اداه ال‬
height ‫ وال‬width ‫ال‬
‫ نقوم باضافة مجلد للصورـ التى ستظهر بشكل عشوائي‬
‫ وفيه هنعمل االعالناتـ وكل اعالن له خمس خصائص كالتالى‬xml ‫ نضيف ملف من نوع‬
<advirtisemet>
<ad>
< ImageUrl>1.jpg</ImageUrl>
<NavigateUrl>http://www.google.com</NavigateUrl>
<AlternateText>Amir Image</alternateText>
<Impression>10</Impression>
<keyword>Book</keyword>
</ad>
<ad>
< ImageUrl>2.jpg</ImageUrl>
<NavigateUrl>http://www.google.com</NavigateUrl>
<AlternateText>adam Image</alternateText>
<Impression>10</Impression>
<keyword>Book</keyword>
</ad>
<ad>
< ImageUrl>3.jpg</ImageUrl>
<NavigateUrl>http://www.google.com</NavigateUrl>
<AlternateText>Amir Image</alternateText>
<Impression>30</Impression>
<keyword>Book</keyword>
</ad>
</advirtisemet>
‫ على حده‬banners ‫ لتجميع كل مجموعة‬keyword ‫الـ‬ 
‫ احتماليةـ ظهور االعالنـ العشوائي‬impression ‫الـ‬ 
choose Data‫ ومن ال‬AdRotator Tasks ‫ وفى الســهم شــمال شــرق االداه بمنطقــة‬adrotator ‫ثم من خالل اداه ال‬ 
‫ الــذى تم انشــاءه‬xml ‫ ثم نختار فى الشاشة التاليهـ ملف ال‬xml file ‫ ثم من انواع قواعد البيانات نختارـ‬new ‫ ثم‬Source
‫سابقا وبه االعالناتـ ويبقى كده تمام اوى‬

7
‫‪ ‬الـ ‪ skin‬وهو نــوع من انــواع الملفــاتـ التنســيقيهـ للمشــروع يشــبه فى طريقــة عملــه الـ ‪ CSS‬حيث يتم عمــل ملــف يحتــوى على‬
‫تنسيق لمفتاح او ‪ button‬فسيتم تطبيق هــذا التنســيق على جميــع انــواع االدوات من نــوع ‪ button‬وههيطبــق عليــه التنســيق‬
‫الموجود فى ملف الـ ‪skin‬‬
‫‪ ‬نضع ‪ button‬على الفورم ونعمله مجموعه خصائص كلون الخلفية ولون الخط والحدود وهكذا‬
‫‪ ‬نضيف للمشروعـ ملف من نوع ‪ skin file‬وهو بينشاء فولدراته تلقائيا‬
‫‪ ‬ثم فى وضع ال ‪ HtmlSource‬للفورم هناخد التصميمـ ‪ copy‬ولكن بدون الخاصيةـ ‪id‬‬
‫>‪<asp:button runat="server" color="red" background=green/‬‬
‫ثم نضع التنسيق فى ملف ال ‪skinfile.skin‬‬ ‫‪‬‬
‫ثم فى وضع الـ ‪ HtmlSource‬وفى وسم ال <‪ .…page%‬هنربط ملف الـ ‪ skin‬كالتالىـ‬ ‫‪‬‬
‫>‪<%page language="c#" theme="skinfile" CodeFile="a.aspx"%‬‬
‫الستثناءـ ‪ button‬معين من تنسيق ملف ال ‪ skin‬هنضيفله خاصيةـ ‪ enabletheming‬اثناء انشاء المفتاحـ كالتالى‬ ‫‪‬‬
‫>‪<asp:button id="btn1" EnableTheming="false"/‬‬
‫ولو عاوز الغيه من على الفورم كله واطبقة على مفتاح معين فيها ‪:‬هنربط الملــف عــادى فى وســم ال ‪ page‬ونلغى تطــبيق‬ ‫‪‬‬
‫ملف ال ‪ skin‬من على ال ‪ page‬كالتالىـ‬
‫>‪<%page ---------- theme="skinfile" enabletheming="false" %‬‬
‫‪ ‬وفى خصائصـ المفتاح هنعمل خاصية ال ‪"enabletheming="true‬‬
‫‪ ‬يمكن عمل تعاريف عام على مستوى المشروع كله وذلك بوضع الربــط فى ملــف ال ‪ web.config‬وهــذا الملــف يتم وضــع فيــه‬
‫بعض الخصائص التى تخص المشروع كالتالى‬
‫‪Page Theme(skinFile) – custom Error Pages Membership – Cashing – Session – Web Part – ‬‬
‫‪Profile – Debug – WCF Web Services – Ajax – ConnectionString‬‬
‫‪ ‬فى ملف الـ ‪ web.config‬لو الحاجه او الوسم اللي بكتبه ليس له عالقــة بالـ ‪ page.aspx‬مثــل ال ‪Connection String‬‬
‫فهى تخص المشروع كله وليس صــفحة ال ‪ aspx‬هنــا هنكتبــه فى وســم ال<‪ configuration‬مباشــرة امــا اذا كــان خــاص‬
‫بالصفخةـ مثل ال ‪skinfile‬هنا هنكتبه داخل وسم <‪ >system.web‬كالتالى <‪>/"pag theme=="skinfile‬‬
‫‪ ‬الـ ‪ Custom Error Page‬هنا بنصمم صفحة خاصة بخطأمعين مثل خطأ ‪ 404‬وهو عدم العثور على الصفحةـ او الصفحة غير‬
‫موجوده هنا الخطأـ خاص بصفحات ال ‪ aspx‬لذلك هنكتبه فى <‪ >system.web‬فى ملف ‪ web.config‬كالتالىـ‬
‫>‪<configuration‬‬
‫>‪<system.web‬‬
‫>"‪<customErrors Mode="on‬‬
‫>"‪<error statusCode="404" redirect="404.aspx‬‬
‫>‪</customerrors‬‬
‫>‪</system.web‬‬
‫>‪<configuration‬‬
‫ولمعرفة ارقام االخطاء لهندلتها وعمل صفحات مخصصة لها نبحث عن ‪ iis error codes‬بجوجل‬ ‫‪‬‬
‫ممكن اعمل ‪ defaultRedirect‬لكل االخطاء كالتالى‬ ‫‪‬‬
‫>‪<customerrors mode="on" defaultRedirect="error.aspx‬‬
‫والشكل التالىـ يوضح ‪ CustomError Mode‬وهو يعنى ‪ .‬من الذى يستطيع مشاهدة صفحة الخطأـ‬ ‫‪‬‬
‫‪Mode:‬‬ ‫‪On‬‬ ‫‪Off‬‬ ‫‪RemoteOnly‬‬
‫‪Client‬‬ ‫‪True‬‬ ‫‪False‬‬ ‫‪True‬‬
‫‪Sys Admin‬‬ ‫‪True‬‬ ‫‪False‬‬ ‫‪False‬‬

‫‪ ‬الـ ‪ WebUserControl‬هم عبارة عن نموزج يتم تصميمه وتوزيعه على الشاشات التى تحتاجهـ ومن مميزاته ان اى تعديل يتم‬
‫على التصميم الرئيسى يتم تطبيقة على كل الشاشاتـ الموجود بها الـ ‪web user control‬‬
‫‪ ‬نضيف للممشروعـ ونعمل ‪ add new item‬ثم نختارـ ‪ web user control‬وامتدادها ‪ascx.‬‬
‫‪ ‬بعد االنتهاء من تصــميم النمــوزج الــذى نريــده وحفظــة ‪ .‬نقــوم باضــافتة الى اى ‪ page‬عن طريــق عمــل ‪DragAndDrop‬‬
‫لالداه ونضعها على الفورم‬

‫‪8‬‬
‫عشان اوصل الداه على الـ ‪ UserControl‬مثل ‪ Text1‬من اى ‪ page‬فرعية من خالل ال ‪#C‬‬ ‫‪‬‬
‫‪TextBox RcvTxt=itshareUCA1.find("Text1") as TextBox‬‬
‫او يمكن الوصول اليهــا من طريــق اخــر وهى انى اعمــل ‪ property‬فى ال ‪ UserControl‬واعملهــا ‪ Public‬عشــان اقــدر‬ ‫‪‬‬
‫ااتعامل معاها مباشرة من اى ‪ page‬فرعية‬
‫}};‪Public Textbox Rcvtxt{get{return Text1‬‬
‫وفى الفورم الموجود بها ال ‪UserControl‬‬ ‫‪‬‬
‫;‪Textbox2.text.text=itshareUCA1.Rcvtxt.text‬‬

‫لو فى ‪ UserControl‬وعليهــا ‪ Txt1‬والـ ‪ UserControl‬دى خطناهـاـ على ‪ a.master‬وانشــأتـ ‪ b.aspx‬والماســتر لهــا‬ ‫‪‬‬
‫هو ‪ a.master‬وبالتالى الـ ‪ b.aspx‬ورثت ال ‪ UserControl‬من ‪ . a.master‬لعمل ‪ access‬على ‪ txt1‬من ‪b.aspx‬‬
‫‪TextBox rcvtxt = Master.findcontrol("UserControl1").findcontrol("txt1") as textbox‬‬
‫‪ ‬يعنى ‪ rcvtxt‬تســاوي(دور فى الصـفحة الماسـترـ للصـفحةـ الحاليـة على اداة ‪ UserControl1‬ولمـا تالقيهــا دور فيهـا على‬
‫‪txt1‬‬
‫‪ Asp State Managment ‬وهى تستخدم لنقل البياناتـ بين الصفحات مثال السؤال فى كل صــفحة عن ‪ username‬و ‪pwd‬‬
‫وان لم تكن موجوده فسينتقل الى صفحة ال ‪ login‬وهنا نستخدم ال ‪ state‬لنقل معلومات المستخدمبينـ الصفحاتـ كى ال تطلبهــا‬
‫كل صفحة يدخل عليها المســتخدم وهنــا ال نســتخدم بروتوكــول ال ‪ http‬لنقــل البيانــاتـ النــه مــع كــل ‪ request‬جديــد هنجــد ان‬
‫المعلومـــات اللىـ فى ال‪ request‬القـــديم تم تفريغهـــا لـــذلك نســـتخدم ال ‪ state‬حيث ان بروتوكـــول ال ‪ http‬هـــو ‪stateless‬‬
‫‪ protocol‬فهو ال يحتفظ بالمعلومات ‪ .‬وانواع الـ ‪ Asp State Managment‬كالتالىـ‬
‫‪ ‬الـ ‪ ViewState‬ومثال عليها اننا عنعمل رسالة ترحيب بالمستخدم بعد ادخالة للـ ‪id – name- age‬‬
‫‪ ‬هنعمل ‪ class‬خارج حدود ال ‪ page‬كالتالى‬
‫]‪[serializable‬‬
‫‪Class guestData‬‬
‫{‬
‫};‪Public int id { get; set‬‬
‫};‪Public string name { get; set‬‬
‫};‪Public int age { get; set‬‬
‫}‬
‫فى مفتاح ال ‪ signup‬هنعمل ‪ set‬للمتغيراتـ كالتالىـ‬ ‫‪‬‬
‫;)(‪guestData g=new guestData‬‬
‫;)‪g.id=int.parse(txt1.text‬‬
‫;‪g.name=txt2.text‬‬
‫;)‪g.age=int.parse(txt3.text‬‬
‫;‪viewstate["GuestInfo"]=g‬‬
‫وفى مفتاح عرض رسالة الترحيب هنعمل ‪ get‬للمتغيراتـ‬ ‫‪‬‬
‫;‪GuestData rcvg=viewstate["GuestInfo"] as GuestData‬‬
‫;‪Lbl1.text="welcome mr " + rcvg.name +"And ur age is "+ rcvg.name‬‬
‫احنـــا هنـــا عملنـــاـ ‪ casting‬للــــ‪ GuestInfo‬على الكالس اللىـ اســـمه ‪ GuestData‬عشـــانـ ان اى حاجـــه بتتخـــزنـ فى‬ ‫‪‬‬
‫‪ container‬مثل ‪ viewstate‬فهى بتتخزنـ على شكل ‪ object‬الى ان تعمل لها ‪ casting‬على الشكل اللى بعرفه وهــو فى‬
‫حالتنا هنا ‪Guestdata rcvg‬‬
‫اما عن ال [‪ ]serializable‬هنبقى نفهمها بعدين‬ ‫‪‬‬
‫يتم تفريغ ال ‪ proberty‬اى ال ‪ get‬وال ‪ set‬بعد عمل ‪ postback‬فعشان نحتفظ بيابياناتـ حطيناهاـ فى ال ‪ViewState‬‬ ‫‪‬‬
‫الـ ‪ property‬حاجه طبعا بنعملها عشان نحط فيها قيم ونرجع نستدعيها تانى‬ ‫‪‬‬

‫‪9‬‬
‫‪ ‬الـ ‪ QuesryString‬لو مثال هعمل شاشة رئيسيهـ بها لنكاتـ كل االجهزة وشاشة اخري تقوم بعرض تفاصيل لكل جهاز على حده‬
‫فهنا هنستخدم الـ ‪ QueryString‬الن كل ما نحتاجه فقط من الشاشة الرئيسية هو ‪ id‬الجهازـ لكى نستعلم عن بياناته ونعرضــها‬
‫وبيكون شكلة كده مثال ‪details.aspx?id=10‬‬
‫‪ ‬وهو يخزن بياناتـ من نوع ‪ string‬فقط اى نصوص او ارقام هدفه انى بنقل المتغيراتـ من ‪ page‬الى اخري عن طريــق الـ‬
‫‪URL‬‬
‫‪ ‬هنعمل عدد ‪ page 2‬وهما ‪ from.aspx‬و ‪ to.aspx‬وهنا لو هباصى متغير واحد هكــون كــده ‪ details.aspx?id=10‬او‬
‫لو هبعت متغيرين مثال هيكون كده ‪details.aspx?id=10&name=amir‬‬

‫فى صفحة ‪ from.aspx‬هنعمل لينكاتـ كالتالىـ‬ ‫‪‬‬


‫>‪<a href="to.aspx?id=1&name=ali">link1</a‬‬
‫>‪<a href="to.aspx?id=2&name=amir">link2</a‬‬
‫>‪<a href="to.aspx?id=3&name=ahmed">link3</a‬‬
‫‪ ‬وفى صفحة ‪ to.aspx‬هنضع عدد ‪ label 2‬احدهم لعرض الـ ‪ id‬و ‪ name‬وفى حدث ‪page_load‬‬
‫;)(‪Label1.text= Request.QueryString["id"].tostring‬‬
‫;)(‪Label2.text= Request.QueryString["name"].tostring‬‬
‫‪ ‬الـ ‪ cookie‬مثال لو عندى ‪ checkbox‬مكتوب فيه تزكرنى فهنا الصــفحةـ بتنشـأـ ملــف عن هــارد المســتخدم يحتــوى على بعض‬
‫بيانات الدخول وتعملهم ‪ id‬عشانـ ترجعهم فى كل مره يتم فيها فتح اى صفحة فى الموقع‬
‫‪ ‬وهى ايضا تخزن بيانات من نوع ‪ string‬وممكن استخدمها فى عمل ال ‪ voting‬عشان اضــمن ان المســتخدم يعمــل ‪vote‬‬
‫لمره واحده فقط‬
‫‪ ‬وفكرتها كالتالىـ لما المستخدم بيفتح الصفحةـ الول مره بيعمل ‪ request‬على السيرفرـ فالسيرفر بيرد عليه بالـ ‪response‬‬
‫وفيها بينشاء ملف ‪ cookie file‬يحتوى على ال ‪ id‬ولو المستخدم بيفتح الصــفحة لتــانىـ مــره واثنــاءـ عمــل ال ‪request‬‬
‫يرفق مع ملف ال ‪ cookie‬وبه ال ‪id‬‬
‫‪ ‬هنعمل مثال عليها وهو ال ‪ frmLogin.aspx‬وفيه هنعمل ‪txtuser-txtpwd-chkrem-btnLogin‬‬
‫‪ ‬وفى ال ‪ btnLogin‬هنكتب التالى‬
‫;)"‪HttpCookie hcookie =new HttpCookie("mysharecookie‬‬
‫;‪Hcookie["username"]=txtuser.text‬‬
‫;)‪Hcookie.values.add("password",txtpwd.text‬‬
‫;)‪Hcookie.expires.add(7‬‬
‫;)‪Response.add(hcookie‬‬
‫;)"‪Response.redirect(default.aspx‬‬
‫وفى صفحة ال ‪ default.aspx‬هنستقبل قيم ال ‪ user‬و ‪ pass‬كالتالىـ حيث فى حث ال ‪page-load‬‬ ‫‪‬‬
‫;]"‪Httpcookie hcookie=request.cookies["mysharecookie‬‬
‫;)(‪Txt1.text=hcookie["username"].tostring‬‬
‫;)(‪Txt2.text=hcookie["password"].tostring‬‬

‫‪10‬‬
‫ والمدى الخــاص بهــا‬memory-database-stateserver ‫ ويمكن حفظها فى‬shared on all pages ‫ وهى‬Session ‫ الـ‬
‫ دقيقة ويمكن تغيرها وهى مؤمنــه كمــا يمكنهــا‬20 ‫ لها هو‬LifeTime ‫على كل الفحات ويتم انشاءها لكل مستخدم على حده والـ‬
‫التعامل مع جميع انواع قواعد البيانات‬
‫وهنضـيف كمـان‬txtuser-txtpwd-chkrem- btnLogin ‫ وفيـه هنعمـل‬frmLogin.aspx ‫ هنعمـل مثـال عليهـا وهـو ال‬
home.aspx
‫ ليكون معرف على كل الصفحات وننشأه بان نضغط كليــك يمين على اســم المشــروع ثم‬LoginInfo ‫ اسمه‬class ‫ وهنضيف‬
add new item ‫ ثم بعد انشاءه نضغط كليك يمين عليه ثم نضغط على‬App_Code ‫ هنختارـ‬add asp.net folder ‫من‬
‫ كالتالىـ‬loginInfo ‫ونفتحه ونضيف فيه كالس ال‬class ‫ومنها نختار‬
Class LoginInfo
{
Public string myuser { get; set; }
Public string mypwd {get; set; }
}
‫ هناكتبـ التالىـ‬login‫وفى مفتاح ال‬ 
String username="amir";
String password="1234";
If (txtuser.text==username && txtpwd.text==password)
{
LoginInfo login =new LoginInfo;
{
myuser=txtuser.text;
mypwd=txtpwd.text;
}
Session["MyLogInfo"]=login;
Response.redirect("home.aspx");
}
‫ كالتالى‬page_load ‫ هنستقبل اسم المستخدم والباسورد فى حدث الـ‬home.aspx ‫ثم فى صفحة ال‬ 
If (session["MyLogInfo"]==null){response.redirect(loginFrm.aspx");}
Else
{
LoginInfo rcvLogin=session["MyLogInfo"] as loginInfo;
Response.write("welcome " + rcvLogin.myuser);
}
page_load ‫ فى حــدث ال‬master ‫لكن االصح اننا نحط الكود اللى بيتأكد من اليوزرـ والباص ونحطه فى صفحة من نــوع‬ 
‫كى ال يتم السؤال عنه كل شوية‬
‫ كالتالىـ‬property ‫ لكل متغير على حده بدال من عمله فى‬session ‫ممكن اعمل‬ 
Session["username"]=txtuser.text;
Session["password"]=txtpwd.text;

11
‫الـ ‪: Session‬لو عملناـ ويب سايت كبير وعدد المستخدمين ليه كتير فهنا بنحط الموقع على اكتر من سرفر فمثال الفيس بوك‬ ‫‪‬‬
‫محطوط على ‪ 3000‬سيرفر حيث عندما يصل عدد الـ ‪ requests‬الى عــدد معين فــبيتم نقــل الـ ‪ requests‬الجديــده او القادمــة‬
‫على سـيرفر اخـر ‪ .‬يعـنى الـ ‪ IIS‬بيسـتوعبـ عـدد معين من الـ ‪ requests‬للثانيـةـ الواحـده واللى بيعمـل ‪ manage‬للقصـه دى‬
‫حاجه اسمها الـ ‪ LoadBalance‬وهو رابط على كــل الســيرفرات بحيث لــو زادت عـدد الطلبــاتـ عن عــدد معين على ســيرفر مــا‬
‫فبينقل على السيرفر اللى بعده تلقائياـ‬
‫‪ ‬طيب هنا هيبقى وضع الـ ‪ session‬اللىـ فيها المستخد وكلمة المرور ايه ؟ ؟ فهنا كل مــا هينتقــل على ســيرفر جديــد هيطلب‬
‫اسم المستخدم وكلمة المرور من جديد واللى هينظم الموضوع ده حاجه من اتنين ‪:‬‬
‫‪ Asp State Server ‬وهى ‪ windows service‬موجوده على السيرفر لها ‪ ip‬و ‪ port no‬وطالما لها ‪ ip‬و بورت‬
‫فهــا اقــدر اوصــلها فهنــا المســتخدم هينتقــل من ســيرفر ‪ 1‬الى ســيرفر ‪ 2‬بــدون الســوال عن ال ‪ user‬وال ‪ pass‬النهم‬
‫موجودين على الـ ‪windows service‬‬
‫‪ Store In SQL Database ‬بيث انى هخزن فيها بيانات ال‪ session‬وهنا كل السيرفراتـ عارفــه انهــا هتاخــد من الـ‬
‫‪ session‬دى‬
‫‪ ‬فهنا الـ ‪ session‬لها ‪ 3‬اماكن بتتخزنـ فيها وهى كالتالى‬
‫‪InProcserver Memory ‬‬
‫‪AspStateServerwindows Service ‬‬
‫‪Sql Server database ‬‬
‫‪ ‬والكالم ده كله بعمله فى ملف ال ‪ web.config‬داخل وسم <‪ >system.web‬كالتالى‬
‫>‪<sessionstate mode="State Sever" StateConnectionString="tcpip=127.0.0.1:42424/‬‬
‫ثم ندخل على الـ ‪ administrative tools‬فى ال ‪ control panal‬ثم ندخل على ال ‪ services‬ونتأكد ان خدمة الـ ‪Asp‬‬ ‫‪‬‬
‫‪ Service State‬تعمل وليست متوقفه‬
‫اما الطريقةـ الثانية وهى التخزينـ فى قاعدة بياناتـ ال ‪ sql server‬حيث فى وسم <‪>system.web‬‬ ‫‪‬‬
‫"‪<sessionState mode="sqlserver" sqlconnectionstring="connectionstring‬‬
‫>‪allowcustomsqldatabase="true"/‬‬
‫‪ ‬ثم نذهب الى المسارـ التالىـ ‪c"\windows\microsoft.net\framework\v 4.5 \install sql state‬‬
‫‪ ‬وناخذ منه جدول ‪ AspStateTempSessions‬ونعمله ‪ run‬فى الـداتابيز بتاعتنــا ولـو عمـل مشـكلة هناخـد الجـدول بـدون‬
‫حقل الـ ‪flags‬‬
‫‪ ‬الـ ‪ application‬والفرق بينه وبين ال ‪ sessions‬هو ان االـ ‪ session‬يتم عملها لكل مستخدم على حده امــا ال‪application‬‬
‫يتم عملها لكل المستخدمينـ وهنعمل مثال عدد الزوار للموقع‬
‫‪ ‬نقوم باضافة ملف ‪ global application class‬وهو يتم اضافتة مره احده للمشروع على عكس ملــف ال ‪web.config‬‬
‫فهو يمكن اضافتة الى كل ‪sub directory‬‬
‫‪ ‬مـــــــــف ‪ global.asax‬يحتـــــــــوى على ‪ 5‬احـــــــــداث هامـــــــــه وهى ‪ application_start‬و ‪ application_end‬و‬
‫‪ application_error‬و ‪ session_start‬و ‪session_end‬‬
‫‪ ‬فى حدث ال ‪ application_start‬هنكتب التالىـ‬
‫;‪Application["visitors"]=0‬‬
‫وبما ان كل مستخدم هيفتح الموقع فهيبقى ليه ‪ session‬ففى حدث ‪ session_start‬هنكتب التالىـ‬ ‫‪‬‬
‫;‪Application.lock‬‬
‫;‪Int counter=0‬‬
‫;))(‪Counter=int.parse(application["visitors"].tostring‬‬
‫;‪Counter ++‬‬
‫‪Application["visitors"]=counter‬‬
‫;‪Application.unlock‬‬
‫‪ ‬هنا لو مثال دخل على الموقع عدد ‪ 2‬مستخدم دخلو على الموقع فى نفس الثانيةـ وكان عدد الزوار مثال ‪ 1000‬وبمــا ان ال‬
‫‪ application‬يحدث على مستوى كل ال ‪ users‬هنا عداد الزوار هيحسـبهم شـخص واحـد اى ‪ 1001‬فهنـا وتشـبيها اكـثر‬
‫واقعيه لو عندنا حمام ففى شخص هيدخل الحمام ويعمل ‪ lock‬للبابـ وبعد ما يخلص هيعمل ‪ unlock‬للباب عشان الشــخص‬
‫اللى بعده يدخل وبعد كده بنعرض ال ]"‪ application["visitors‬فى اى مكان عاوزينه‬
‫)‪} {If(page.ispostback==true‬‬ ‫‪ ‬ممكن استخدم خاصية ‪ ispostback‬للصفحةـ كالتالى‬

‫‪12‬‬
‫‪ ‬الـ ‪ Caching‬او االحتفاظ ببعض البيانات لفترو معينه وهى يتم حفظها على السيرفر ولها نوعانـ كالتالىـ‬
‫‪ Output caching ‬وده بيكون للـ ‪ page‬او الـ ‪controls‬‬
‫‪ Data caching ‬وده بيكون لل ‪objects‬‬
‫‪ Caching page ‬حيث فى وضع الـ ‪ html source‬للصفحة وتحت وسم ال <‪ >%page%‬هنكتب‬
‫>‪<%outputcache duration="15" VaryByParam="*"%‬‬
‫‪ ‬وممكن اكتب مكان ال * اسم ال‪ param‬مثال ‪ id‬وحصلناـ عليه مثال من ‪am.aspx?id=1‬‬
‫‪ ‬هنا ال ‪ page‬بتبقى جــاهزه على الســيرفر لمــا المســتخدم بيعمــل ‪ request‬يعــنى مش بيبــنى الصــفحة من جديــد وهنــا‬
‫الصفحة بتبفى جاهزه لمده ‪ 15‬ثانية‬
‫‪ Cache control on page ‬هنضع االداه فى ‪ webusercontrol‬واكتب فيها وسم ال ‪ caching‬ثم نضعها على الصفحة‬
‫فهنا االداه دى بس هى اللى هيتعملها ‪cahing‬‬
‫‪ Caching page expect control ‬هنا هنضيف اداه اسمها ‪ subSittution‬وهى بتاخد ‪method‬انا بعملها يدويا ولكن‬
‫لهـا مجموعـه شــروط وهى ‪ static – string – HttpContext as input parameter‬ويتم عملهــا اوال بانشــاء ال‬
‫‪ method‬كالتالىـ‬
‫};)(‪Static string mymethod(httpcontext hcontext){return datetime.now.tolongtimestring‬‬
‫وفى خاصية ‪ methodname‬لالداه ‪ substitution‬هنكتب اسم الميثود ‪mymethod‬‬ ‫‪‬‬
‫هنا ال ‪ page‬كله هيتعمله ‪ caching‬عدا اللى موجود باالداه ‪substitution‬‬ ‫‪‬‬

‫‪13‬‬

You might also like