16
ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮ ﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱASP.NET ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ: ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ) [email protected] ( ﻓﺼﻞ ﭘﻨﺠﻢ: ﺑﺮﺭﺳﯽ ﻭ ﺗﻌﻴﻴﻦ ﺍﻋﺘﺒﺎﺭ ﺩﺍﺩﻩ ﻫﺎﯼ ﻭﺍﺭﺩ ﺷﺪﻩ ﺍﺯ ﻃﺮﻑ ﮐﺎﺭﺑﺮ ﻭ ﻣﻮﺍﺭﺩ ﺗﻜﻤﻴﻠﻲ ﻛﻨﺘﺮﻝ ﻫﺎﻱ ﻭﺏ ﻣﻘﺪﻣﻪ: ﺍﻳﻦ ﻓﺼﻞ ﺩﺭ ﺣﻘﻴﻘﺖ ﻗﺴﻤﺖ ﺩﻭﻡ ﻓﺼﻞ ﭘﻴﺸﻴﻦ ﻣـﻲ ﺑﺎﺷـﺪ. ﺩﺭ ﻓﺼـﻞ ﺟـﺎﺭﻱ ﻣـﺮﻭﺭﻱ ﺧـﻮﺍﻫﻴﻢ ﺩﺍﺷـﺖ ﺑـﺮ ﺑﺎﻗﻴﻤﺎﻧﺪﻩ ﻱ ﻛﻨﺘﺮﻝ ﻫﺎﻱ ﻣﻬﻢ ﺳﺮﻭﺭ ﻭﺏ. ﺍﺭﺯﻳﺎﺑﻲ ﺩﺍﺩﻩ ﻫﺎﻱ ﻭﺭﻭﺩﻱ ﻛﺎﺭﺑﺮ: ﻳﻜﻲ ﺍﺯ ﻣﻬﻤﺘﺮﻳﻦ ﻣﺮﺍﺣﻞ ﺩﺭﻳﺎﻓﺖ ﺩﺍﺩﻩ ﻫﺎ ﺍﺯ ﻛﺎﺭﺑﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺍﻃﻤﻴﻨـﺎﻥ ﺣﺎﺻـﻞ ﻛﻨـﻴﻢ ﺁﻳـﺎ ﺩﺍﺩﻩ ﻫـﺎﻱ ﻭﺍﺭﺩ ﺷﺪﻩ ﺍﺯ ﻃﺮﻑ ﺍﻭ ﻣﻌﺘﺒﺮ ﻫﺴﺘﻨﺪ ﻳﺎ ﺧﻴﺮ؟ ﺍﺻﻮﻝ ﺗﻌﻴﻴﻦ ﺍﻋﺘﺒﺎﺭ ﺑﺪﻳﻦ ﺷﺮﺡ ﻣﻲ ﺑﺎﺷﻨﺪ: ﺁﻳﺎ ﻛـﺎﺭﺑﺮ ﭼﻴـﺰﻱ ﺭﺍ ﻭﺍﺭﺩ ﻛﺮﺩﻩ ﺍﺳﺖ ؟ ﺁﻳﺎ ﻧﻮﻉ ﺻﺤﻴﺤﻲ ﺍﺯ ﺩﺍﺩﻩ ﺭﺍ ﻭﺍﺭﺩ ﻛﺮﺩﻩ ﺍﺳﺖ) ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﺁﺩﺭﺱ ﺍﻳﻤﻴـﻞ. ( ﺁﻳـﺎ ﺩﺍﺩﻩ ﻭﺭﻭﺩﻱ ﺩﺭ ﻳﻚ ﺑﺎﺯﻩ ﺧﺎﺹ ﻗﺮﺍﺭ ﺩﺍﺭﺩ؟ ﻭ ﺍﻣﺜﺎﻝ ﺍﻳﻨﻬﺎ. ASP.NET ﻳﻚ ﺳﺮﻱ ﺍﺯ ﻛﻨﺘﺮﻝ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﺩﺍﺩﻩ ﻫﺎﻱ ﻭﺭﻭﺩﻱ ﺭﺍ ﻗﺒﻞ ﺍﺯ ﺍﻳﻨﻜﻪ ﺩﺍﺩﻩ ﻫﺎ ﺑﻪ ﺳﺮﻭﺭ ﻓﺮﺳﺘﺎﺩﻩ ﺷﻮﻧﺪ ، ﺩﺭ ﺳﻤﺖ ﻛﻼﻳﻨﺖ ﻣﻬﻴﺎ ﻛﺮﺩﻩ ﺍﺳﺖ ﻭ ﺑﻪ ﺍﻳﻦ ﺻﻮﺭﺕ ﺑﺪﻭﻥ ﺩﺭﮔﻴﺮ ﺷﺪﻥ ﺳﺮﻭﺭ ﻭ ﺗﺤﻤﻴﻞ ﺑﺎﺭ ﺍﺿﺎﻓﻲ ﺑﻪ ﺁﻥ ﺍﻳ ﻨﻜﺎﺭ ﺻﻮﺭﺕ ﻣﻲ ﮔﻴﺮﺩ.

Microsoft Word - asp_net_ch05_final

Embed Size (px)

DESCRIPTION

‫ﮐﺎﺭﺑﺮ‬ ‫ﻃﺮﻑ‬ ‫ﺍﺯ‬ ‫ﺷﺪﻩ‬ ‫ﻭﺍﺭﺩ‬ ‫ﻫﺎﯼ‬ ‫ﺩﺍﺩﻩ‬ ‫ﺍﻋﺘﺒﺎﺭ‬ ‫ﺗﻌﻴﻴﻦ‬ ‫ﻭ‬ ‫ﺑﺮﺭﺳﯽ‬ ‫ﺗﻜﻤﻴﻠﻲ‬ ‫ﻣﻮﺍﺭﺩ‬ ‫ﻭ‬ ‫ﺑﺎﺷـﺪ‬ ‫ﻣـﻲ‬ ‫ﭘﻴﺸﻴﻦ‬ ‫ﻓﺼﻞ‬ ‫ﺩﻭﻡ‬ ‫ﻗﺴﻤﺖ‬ ‫ﺣﻘﻴﻘﺖ‬ ‫ﺩﺭ‬ ‫ﻓﺼﻞ‬ ‫ﺍﻳﻦ‬ . ‫ﺑـﺮ‬ ‫ﺩﺍﺷـﺖ‬ ‫ﺧـﻮﺍﻫﻴﻢ‬ ‫ﻣـﺮﻭﺭﻱ‬ ‫ﺟـﺎﺭﻱ‬ ‫ﻓﺼـﻞ‬ ‫ﺩﺭ‬

Citation preview

Page 1: Microsoft Word - asp_net_ch05_final

1

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

:پنجمفصل

و موارد تكميلي بررسی و تعيين اعتبار داده های وارد شده از طرف کاربر كنترل هاي وب

:مقدمه

در فصـل جـاري مـروري خـواهيم داشـت بـر . اين فصل در حقيقت قسمت دوم فصل پيشين مـي باشـد . باقيمانده ي كنترل هاي مهم سرور وب

:ارزيابي داده هاي ورودي كاربر

يكي از مهمترين مراحل دريافت داده ها از كاربر اين است كه اطمينـان حاصـل كنـيم آيـا داده هـاي وارد آيا كـاربر چيـزي را وارد : شده از طرف او معتبر هستند يا خير؟ اصول تعيين اعتبار بدين شرح مي باشند

آيـا داده ورودي در ) . ايميـل براي مثال آدرس ( كرده است ؟ آيا نوع صحيحي از داده را وارد كرده است .يك بازه خاص قرار دارد؟ و امثال اينها

ASP.NET يك سري از كنترل هاي ارزيابي داده هاي ورودي را قبل از اينكه داده ها به سرور فرستاده شوند ، در سمت كالينت مهيا كرده است و به اين صورت بدون درگير شدن سرور و تحميل بار اضافي به

.نكار صورت مي گيردآن اي

Page 2: Microsoft Word - asp_net_ch05_final

2

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

WebUIValidation.JS تعيين اعتبار داده هاي ورودي در سمت كالينت توسط كتابخانه اي كه در فايل نكتـه . قرار دارد و به صورت مجزا بر روي كامپيوتر هاي كالينت دريافت خواهد شـد ، صـورت مـي گيـرد

نگارش هاي پايين تـر ( Jscript کاربر از جالب اينجا است كه حتي اگر بدليل پشتيبانی نکردن مرورگر وب تعيين اعتبار سمت کالينت مهيا نبود، به صورت خودكار تعيين اعتبار سمت سرور ) اينترنت اكسپلورر ٤از

.مهيا مي گردد و در هر حال تعيين اعتبار داده هاي ورودي صورت خواهد گرفتاين . هاي ورودي كاربر، توضيح داده شده اند در جدول زيرشش كنترل موجود براي تعيين اعتبارداده

آنها مشخص شـده اسـت را بررسـي ControlToValidateنوع كنترل ها مقدار كنترلي را كه در خاصيت .مي نمايند

. ASP.NET كنترل هاي تعيين اعتبار در -١جدول

كاربرد كنترل

RequiredFieldValidator آيا کاربر . ( داده است يا خيربررسي مي كند كه آيا كنترل حاوي

)چيزی را وارد کرده است ؟

CompareValidator بررسي مي كند كه آيا داده ي وارد شده با داده ي موجود در كنترل

.ديگر تطابق دارد يا خير

RangeValidator بررسي مي كند كه آيا آيتم وارد شده بين دو مقدار تعريف شده قرار

.دارد يا خير

RegularExpressionValidator بررسي مي كند كه آيا داده وارد شده با فرمت مشخص شده مطابقت

.دارد يا خير

CustomValidator اعتبار داده ي ورودي را توسط اسكريپتي كالينت سايد يا سمت

.سرور و يا هر دو انجام مي دهد

validationSummary ي دهد يا به صورت تمام موارد بررسي شده را در يك مكان نمايش م

.كلي فقط يك پيغام را نمايش مي دهد

Page 3: Microsoft Word - asp_net_ch05_final

3

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

: براي استفاده از كنترل هاي تعيين اعتبار بايد مراحل زير طي شود ترســـيم و يـــا قـــرار دادن يـــك كنتـــرل اعتبـــار ورودي روي فـــرم و تنظـــيم كـــردن خاصـــيت -١

ControlToValidateشــما از كنتــرل اگــر . آن بــه كنترلــي كــه مــي خواهيــد تعيــين اعتبــار شــودCompareValidator استفاده مي كنيد ، بايد خاصيت ControlToCompareرا نيز تنظيم كنيد .

را به پيغـامي كـه مـي خواهيـد هنگاميكـه داده ي ورودي معتبـر نيسـت ErrorMessageخاصيت -٢ .نمايش دهد تنظيم كنيد

از ايـن مـورد . د ، تنظيم كنيد آنرا براي نمايش دادن پيغامي هنگاميكه خطا رخ مي ده Textخاصيت -٣ . استفاده مي شودErrorMessageبراي نمايش دادن توضيحات طوالني تر از خاصيت

را روي فرم وب براي نمايش تمام پيغـام هـاي ValidationSummaryدر صورت نياز يك كنترل -٤ .خطاي حاصل از كنترل هاي تعيين اعتبار ، ترسيم كنيد

مي شود ، سبب انجـام بررسـي Post-Backستاده شدن يك رخداد تنها وجود كنترلي كه سبب فر -٥روي فـرم در ايـن حالـت ) ماننـد يـك دكمـه ( پس وجود يك چنين كنترلـي . تعيين اعتبار مي گردد

.ضروري است

ــك ــورت يـ ــه صـ ــار بـ ــين اعتبـ ــاي تعيـ ــايش خطاهـ ــراي نمـ ــرل MessageBox بـ ــيت كنتـ خاصـValidationSummary به نام ShowMessageرا True كنيد .

را روي صــــفحه قــــرار دهيــــد و خاصــــيت RegularExprssionValidator اگــــر يــــك كنتــــرل

ValidationExpression ظاهر مي شود كـه در اغلـب مـوارد ١- آنرا انتخاب نماييد ، ديالوگ باكس شكل .كافي مي باشد

Page 4: Microsoft Word - asp_net_ch05_final

4

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

. RegularExprssionValidator صفحه ي اديتور مربوط به كنترل -١شكل

طالعـات ( براي تعيين اعتبـار داده ي ورودي اسـتفاده مـي كنـد Pattern-matching اين كنترل از زبان .) بدست آورد MSDNوسيعتر را در اين زمينه مي توان در

: تركيب كنترل هاي تعيين اعتبار

ايي كه TextBox براي مثال . يك كنترل روي صفحه مي تواند از چندين كنترل تعيين اعتبار استفاده كند و كنتـــرل RequiredFieldValidatorايميـــل كـــاربر را دريافـــت مـــي كنـــد مـــي توانـــد بـــه كنتـــرل

RegularExpressionValidator متصل باشد .

: بايد به نكات زير توجه داشت CompareValidator در مورد كنترل اند به يك نـوع داده مناسـب تبـديل نتوControlToValidateاگر كنترل مشخص شده در خاصيت -

. خواهد بود Invalidنتيجهشود، نتواند به يك نـوع داده مناسـب تبـديل ControlToComareاگر كنترل مشخص شده در خاصيت -

.در اين حالت بايد از يك كنترل ديگر براي تعيين اعتبار بهره جست. خواهد بود Validشود، نتيجه

Page 5: Microsoft Word - asp_net_ch05_final

5

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

Operator استفاده كنيم با تنظيم كـردن خاصـيت CompareValidatorكنترل هنگاميكه مي خواهيم از براي مثال گاهي از اوقات ورودي يك فيلد بايد كمتر يا مسـاوي فيلـد . آن مي توان نوع مقايسه را انجام داد

.اين خاصيت در پنجره خواص کنترل ذکر شده به سادگي قابل تنظيم است. ديگري باشد و امثال اينها

:ال اول مث

مي خواهيم مقـدار . روي صفحه قرار دهيد Button و يك عدد Label ، دو TextBox دو -٢ مطابق شكل نهـايي نمـايش Label دوم تقسيم كنيم و حاصل را در TextBox اول را به مقدار عددي TextBoxعددي

.دهيم

. نماي ابتدايي مثال اول– ٢شكل

نهـايي را Label و btnCalc و دكمه را به txtVal2 و txtVal1به ) مت چپ از س ( ها را TextBox نام

. تغيير دهيدlblResultبه چيزي وارد كرده است يا خيـر و آيـا محتويـات TextBox مي خواهيم چك كنيم كه آيا كاربر در هر دو

TextBox مي باشد؟١٠٠٠ دوم از صفر بزرگتر و كوچكتر از را روي فـرم RangeValidator و يـك كنتـرل RequiredFieldValidatorنتـرل براي اين منظور دو ك

).٣شكل (قرار دهيد

. قرار دادن كنترل هاي تعيين اعتبار روي فرم وب-٣شكل

Page 6: Microsoft Word - asp_net_ch05_final

6

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

مربوط به تكسـت بـاكس اول را بـه RequiredFieldValidator كنترل ControlToValidate خاصيت txtVal1 و ايـن خاصـيت را بـراي كنتـرل ) ٤شـكل ( تنظيم كنيدRequiredFieldValidator مربـوط بـه

TextBox دوم به txtVal2تنظيم نماييد .

. RequiredFieldValidator كنترل ControlToValidate تنظيم كردن خاصيت -٤شكل

تنظيم كنيـد و txtVal2 را به ControlToValidate ابتدا خاصيت RangeValidator و در مورد كنترل ).٥شكل ( تغيير دهيد ١٠٠٠ و ١ آنرا به max و minسپس

بـراي . تك تك كنترل هاي تعيين اعتبـار مـي باشـد ErrorMessage اكنون نوبت به تنظيم كردن خاصيت ). ٦شكل (هركدام يك عبارت معنا دار بنويسيد

لطفا به سـورس ( عدد بر هم را بنويسيد روي دكمه دوبار كليك كنيد و كدي ساده براي تقسيم كردن دو ) . همراه مراجعه كنيد

Page 7: Microsoft Word - asp_net_ch05_final

7

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

. RangeValidator تنظيم خواص كنترل -٥شكل

. كنترل هاي تعيين اعتبار داده هاErrorMessage نماي فرم پس از تنظيم خاصيت -٦شكل ه كليـك نماييـد تـا نتيجـه مطلـوب را قبل از هركاري روي دكمه انجام محاسـب . حاال برنامه را اجرا كنيد

! ببينيد

ــر در ــرف كنتــرل TextBox اگ ــا از ط ــك پيغــام خط ــاييم ي ــر از يــك را وارد نم ــددي بزرگت دوم عRangeValidator خاصـيت ! چون نوع داده ي ورودي را مشخص نكرده ايم ! چرا؟. ظاهر مي شودType

) .٧شكل ( تغيير دهيد intاين كنترل را به

Page 8: Microsoft Word - asp_net_ch05_final

8

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

. را مشخص كردRangeValidator قبل از هر كاري بايد نوع داده ي ورودي كنترل -٧شكل

:كنسل كردن تعيين اعتبار

چون تعيين اعتبار قبل از اينكه سرور صفحه اي را پردازش كند اتفاق مي افتد ، ممكن است كاربر در بين براي كنسل كردن اين كنترل ها مي ! د و نه پيشانبوهي از پيغام هاي خطا گير بيفتد و نه راه پس داشته باش

.استفاده كرد Submit HTML Control نداشته باشد مانند Post-Backتوان از يك كنترل كه خاصيت IsValidبـا بررسـي كـردن خاصـيت ( در اين حالت مي توان كاربر را به يك صفحه ي ديگر هـدايت كـرد

)Pageشيء

Page 9: Microsoft Word - asp_net_ch05_final

9

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

:ممثال دو

. تصويری از مثال دوم در حالت طراحي-٨شکل

صفحه بهValidation در اين مثال مي خواهيم اگر كاربر بر روي دكمه ي كنسل كليك كرد بدون انجام .ي ديگري راهنمايي شود

را كنتـرل مـي كنـد TextBox كه ايـن RequiredFieldValidator ، يك txtID به نام TextBox يك به Submit معمولي از نوع HTML و يك دكمه btnSendيك دكمه سرور وب به نام . دهيدروي فرم قرار

). ٨شكل ( را روي فرم قرار دهيد btnCancelنام اضافه نماييد و نام پـيش ) Add web formآيتم ( Project يك فرم وب جديد به برنامه از طريق منوي

. !Sorry: ار دهيد و داخل آن بنويسيد قرLabelروي اين فرم يك . فرض آنرا بپذيريد : را به صورت زير بايد تغيير دادSubmit صفحه ، خواص كنترل HTML در سورس

<INPUT style="Z-INDEX: 101; LEFT: 274px; WIDTH: 115px; POSITION: absolute; TOP: 142px; HEIGHT: 27px" type="submit" value="Cancel" id="btnCancel" language="javascript" onclick="Page_ValidationActive=false;">

:و در فرم وب كد زير را مي توان اضافه كرد

private void Page_Load(object sender, System.EventArgs e) { if ( Page.IsPostBack ) { Page.Validate(); //user cancelled the validation if (! Page.IsValid ) Response.Redirect("WebForm2.aspx") ; } }

Page 10: Microsoft Word - asp_net_ch05_final

10

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

در اين مثال اگر كاربر روي دكمه كنسل كليك كند و در صورتيكه چيزي را وارد نكرده باشد بـه راحتـي ...)اين برنامه را بيشتر مي توان توسعه داد! ( راهنمايي مي شود!Sorryبه صفحه ي

:يين اعتبار سفارشي تع

اگــر هيچكــدام از كنتــرل هــاي تعيــين اعتبــار نيــاز شــما را بــرآورده نمــي كننــد مــي توانيــد از كنتــرل CustomValidator اگر الزم است پردازش سمت سرور انجام شود ، كد تعيـين اعتبـار را . استفاده نماييد

ــداد ــدServerValidateدر رخــ ــرار دهيــ ــ . قــ ــار ســ ــين اعتبــ ــراي تعيــ ــيت بــ ــت خاصــ مت كالينــClientValidationFunctionاين كنترل را بايد تنظيم كرد .

:مثال سوم

. در اين مثال قصد داريم بررسي كنيم آيا ورودي كاربر يك عدد اول است يا خيرــام ــه ن ــه ب ــك دكم ــور ي ــن منظ ــراي اي ــك btnTest ب ــام TextBox و ي ــه ن ــرل txtPrime ب ــك كنت و ي

CustomValidator به نام vldtxtPrime ٩شكل ( را روي فرم قرار دهيد. (

فرم وب مثال سوم در حالت طراحي-٩شکل

سپس در برگـه ي . تنظيم كنيد btnTest را به vldtxtPrime مربوط به ControlToValidate خاصيت صـفحه . ليك نماييـد را انتخاب نموده و روي آيكوني به شكل رعد و برق ك vldtxtPrimeخواص ، كنترل

Page 11: Microsoft Word - asp_net_ch05_final

11

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

. دوبار كليك كنيد ServerValidateاكنون در قسمت ) . ١٠شكل ( ي رخدادهاي اين كنترل ظاهر مي شود :رخداد زير به صورت اتوماتيك به برنامه اضافه مي شود

private void vldtxtPrime_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args)

. CustomValidator نحوه ی اضافه کردن يک رخداد به کنترل -١٠شکل

بـراي تكميـل كـد لطفـا بـه كـد همـراه . در اين رخداد عمليات چك كردن ورودي كاربر صورت مي گيرد . مراجعه نماييد

. )ل كنيد اين كنترل را به يك عبارت معنا دار تبديErrorMessageبهتر است خاصيت (

Page 12: Microsoft Word - asp_net_ch05_final

12

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

:موارد تكميلي كنترل هاي وب

:ASP.NETطريقه ي حركت بين صفحات مختلف در

روش هـاي مختلفـي را ارائـه داده اسـت كـه در ادامـه ASP.NET براي حركت بين صفحات مختلـف ، . بررسي خواهند شد

ASP.NET حركت بين صفحات در -٢جدول

روش هدايت و حركت به

كاربرد ه اي ديگرصفح

حركت به صفحه اي ديگر HyperLinkكنترل . مي باشدHyperLinkمعادل كليك بر روي يك كنترل ;(…)Response.Redirectتابع

;(…)Server.Transferتابع به فرم وب جاري خاتمه بخشيده و اجراي صفحه اي ديگر را آغاز

كاربرد ) aspx.(ب اين روش تنها براي حركت بين فرم هاي و. مي كند .دارد

;(…)Server.Executeتابع درحاليكه فرم وب جاري درحال نمايش است ، اجراي يك فرم وب

اين . محتويات هر دو فرم تركيب خواهند شد. جديد را آغاز مي كند .روش نيز تنها براي فرم هاي وب كاربرد دارد

تابع اسكريپتي window.open(…);

اگر كاربر از . ره جديد مرورگر نمايش مي دهديك صفحه را در يك پنج استفاده كند اين متد كارآيي pop-up stopperبرنامه هايي مانند

.نخواهد داشت

Page 13: Microsoft Word - asp_net_ch05_final

13

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

: Redirection و HyperLinkاستفاده از

، با كليـك كـاربر بـر روي ايـن كنتـرل بـه HyperLink كنترل NavigateURL با تنظيم كردن خاصيت ايـن كنتـرل سـبب انجـام هيچگونـه رخـدادي در سـمت سـرور . ص شده ، هدايت مي گردد صفحه ي مشخ

و يــا LinkButtonدر صــورت نيــاز بــه پــردازش رخــداد كليــك مــي تــوان از كنتــرل هــاي . نمــي گــرددImageButton در اين حالت مي توان از تابع . استفاده كردResponse.Redirect براي هدايت كـاربر بـه

.يگر استفاده كردصفحه اي د

: Transferاستفاده از متد

Redirect و يـا اسـتفاده از تـابع HyperLink استفاده از اين تابع يا متـد بسـيار شـبيه بـه اسـتفاده از مي توانـد بعضـي از اطالعـات مربـوط بـه صـفحه ي اصـلي را دربـين Transfer: مي باشد با يك تفاوت

سـبب مـي شـود كـه True بـه Transferتنظيم كردن آرگومان تابع . كنددرخواست ها ، حفظ و نگهداري QueryString و ViewStateبراي استفاده از اين حالت . و پروسيجر رخداد در فرم مقصد نيز مهيا باشند

ASP.NETبه صـورت پـيش فـرض . كنيد false فرم وب را EnableViewStateMacابتدا بايد خاصيت كردن آن ، ايـن اطالعـات در صـفحه ي ديگـر نيـز قابـل Falseبا . مي كند Hash را ViewStateاطالعات

.خواندن خواهند شد ASPاگـر بـا . اسـتفاده کـرد Request.Form برای دريافت اين اطالعات در صفحه ای ديگر می توان از

رار داده قـ ASP.NETقديمی آشنايی داشته باشيد اين نوع روش ها فقط برای حفـظ سـازگاری بـا آن در ! ). پس زياد نگران نباشيد( شده است

هرگونه سعي در اسـتفاده از يـك . تنها با فرم هاي وب كار مي كنند Execute و Transfer متدهاي :تذكر

. معمولي با يك خطاي زمان اجرا پاسخ داده خواهد شدHTMLصفحه ي

Page 14: Microsoft Word - asp_net_ch05_final

14

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

: ٤مثال

در ايـن برنامـه . ك فرم وب ديگـر بـه برنامـه اضـافه نماييـد از منوي پروژه ي . يك پروژه جديد باز كنيد .مي خواهيم اطالعات موجود در فرم اول را در فرم دوم نمايش دهيم

. تغييـر دهيـد txtSend و btnSend و يك دكمه قرار دهيد و نام آنها را بـه TextBox روي فرم اول يك

.د كليك آن بنويسيدروي دكمه دوبار كليك كنيد و كد زير را در رخدا

Server.Transfer("WebForm2.aspx",true) ;

قرار دهيد و بر روي صفحه دوبار كليك نموده و در رخداد lblReceive به نام Label روي فرم دوم يك Page_Load آن بنويسيد :

lblReceive.Text = "Received from WebForm1: "+ Request.Form["txtSend"].ToString() ;

صـفحه HTMLبـه سـورس . نماييدFalse فرم اول را بايد EnableViewStateMacفراموش نكنيد كه (

اگر به صورت خودكار اين مورد به تگ باالي صفحه اضافه نشده ، يك بار اين خاصـيت را در . رجوع كنيد HTMLورس نماييد تا به صـورت خودكـار بـه سـ False كنيد و سپس آنرا Trueپنجره خواص خواص

. )در غيراينصورت برنامه اجرا نخواهد شد. صفحه اضافه گردد

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="ex04.WebForm1" enableViewState="True" enableViewStateMac="False"%>

Page 15: Microsoft Word - asp_net_ch05_final

15

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

:Executeاستفاده از متد اين مورد . مي توان فرم وب دوم را بدون ترك اولين فرم وب ، پردازش كرد Execute با استفاده از متد

هماننـد متـد . اجازه مي دهد نتايج را از يـك فـرم وب بـه ناحيـه اي در همـين صـفحه جـاري هـدايت كنـيم Transfer بايد ، EnableViewStateMac صفحه Falseشود .

Post-Back تركيـب مـي كنيـد، هـر گونـه رخـداد Executeرا با استفاده از متد هنگاميكه فرم هاي وب براي اين منظـور اسـتفاده از ايـن روش تنهـا . استفاده شده در فرم دوم سبب پاك شدن فرم اول مي گردد

. ايي را سبب شودPost-Backهنگامي مفيد است كه فرم وب دوم حاوي كنترلي نباشد كه رخداد

:صفحه در يك صفحه مرورگر جديد نمايش

بـرای . كالينت سايد مي توان يك صفحه ي جديد در مرورگر بـازكرد window.open با استفاده از متد :مثال

Window.Open( "http://www.wrox.com/", "myWindowOne", "toolbar=no, menubar=no, location=no, directories=no" );

عـوض کنيـد مـی تـوان يـک چنـين کـاری را بـا HyperLink را در کنتـرل Target البته اگر خاصـيت

.کنترل های وب هم انجام داد

Page 16: Microsoft Word - asp_net_ch05_final

16

شركت پيشگامان فناوري

زشي متعلق به سايت آموزش الكترونيكي پرشيا ميباشدكليه حقوق اين جزوه آمو )[email protected]( نصيريوحيد : استاد دوره ASP.NETجزوه آموزشي كالس

: تمرين

آرگومانهاي زيادي را مي پذيرد مي تـوان آنـرا بـه صـورت يـك window.openاز آنجائيكه تابع -١ .نكار را انجام دهيدبه عنوان تمرين اي. كردencapsulateكالس

. را روي فرم قرار داده و مثال اول فصل را توسعه دهيد ValidationSummaryيك كنترل -٢

فيلدهاي مثال اول فصل را طوري تنظيم كنيد كـه مقـدار CompareValidatorبا استفاده از كنترل -٣ .فيلد دوم همواره كمتر از مقدار فيلد اول باشد

.نت مثال سوم فصل را توسعه دهيدحالت كنترل اعتبار سمت كالي -٤ . دوباره نويسي نماييد و نتيجه را مقايسه كنيدServer.Executeمثال چهارم فصل را با -٥ به صورت متغير باشد و بتوان با برنامه نويسی آنرا تنظـيم window.open متد URLبراي اينكه -٦

کرد چه کاری را بايد انجام داد؟