فرم ها و كنترل های سرويس دهنده

جمع آوری و ذخيره اطلاعات کاربران ، يکی از متداولترين عملياتی است که توسط پياده کنندگان نرم افزارانجام می شود . عمليات فوق می تواند صرفا" در حد و اندازه دريافت يک نام و يا آدرس Email باشد و يا اقلام اطلاعاتی متعددی نظير اطلاعات مورد نياز برای ريجستر نمودن کاربران را شامل شود (نام و نام خانوادگی ، آدرس Email ، شماره تلفن ، آدرس و ... ). پس از دريافت اطلاعات از کاربران و به منظور پردازش آنان نمی توان صرفا" به امکانات و پتانسيل های ارائه شده در html ، اکتفاء نمود . در چنين مواردی می بايست اطلاعات اخذ شده به منظور انجام پردازش های ضروری برای سرويس دهنده وب ، ارسال گردند . سرويس دهنده وب ، پس از انجام پردازش های مورد نياز و استخراج نتايج ، ماحصل عمليات را که می تواند يک نسخه بهنگام شده از صفحه و يا در برخی موارد يک صفحه ديگر را برای کاربر ارسال نمايد .
به منظور دريافت و ارسال اطلاعات کاربران در صفحات وب ، عموما" از يک "فرم " ، استفاده می شود . بدين منظور تگ های خاصی در html پيش بينی شده است . فرم هائی که با استفاده از پتانسيل های html ايجاد می گردند ، فرم های html ناميده شده و می توان از کنترل های html متعددی نظير Textbox , Checkbox و Dropdown list همراه آنان استفاده نمود . تمامی کنترل های فوق ، تسهيلات لازم در خصوص دريافت و ارسال اطلاعات کاربران را ارائه می نمايند.
ASP.NET علاوه بر کنترل های html ، دارای کنترل های اختصاصی خود بوده که در اين رابطه برخی مفاهيم جديد در خصوص آنان نيز ارائه شده است . در گذشته و در مواردی که فرم ها با استفاده از فرم های html ايجاد می گرديدند ، زمانی که يک کنترل خاص بر روی يک فرم توسط کاربر انتخاب می گرديد ، مسئوليت برخورد با داده و يا اطلاعات درج شده در کنترل مورد نظر بر عهده مرورگر بود و صرفا" زمانی که فرم بهمراه اطلاعات موجود برای سرويس دهنده وب ، ارسال می گرديد ، مسئوليت سرويس دهنده در خصوص برخورد مناسب و تعريف شده با داده های موجود در فرم ، آغاز می گرديد . در فريمورک دات نت ، ويژگی های جديدی نظير بخاطر سپردن داده درج شده توسط کاربر در يک Textbox ، فراهم شده است .
در مجموعه مقالاتی که ارائه خواهد شد به بررسی موارد زير پرداخته و از اين رهگذر توانمندی خود را در بکارگيری فرم ها ، استفاده از کنترل های HTML و کنترل های سرويس دهنده ASP.NET ، افزايش خواهيم داد .
• مدل سرويس گيرنده - سرويس دهنده وب
• فرم های وب و فرم های HTML
• کنترل های فرم HTML
• کنترل های سرويس دهنده

فرم ها در دنيای واقعی

شايد اين سوال برای شما مطرح شده باشد که چرا در برنامه های وب به فرم ها ، نياز داريم ؟ در پاسخ می توان به موارد زير اشاره نمود :
• دريافت اطلاعات از کاربران به منظورريجستر نمودن آنان ، خريد يک محصول ، پيوستن به ليست های Email و يا Newsgroup
• دريافت نقظه نظرات کاربران. بدين ترتيب می توان ساير صفحات را با توجه به اطلاعات دريافتی سفارشی نموده و چيزی را نمايش دهيم که مورد علاقه کاربران است .
• آگاهی از وضعيت ارائه يک سرويس و نحوه بهبود آن ( رای گيری )
• درج و ويرايش متن به صورت online در يک Forum و يا newsgroup
فرم ها ، يکی از متداولترين روش های دريافت اطلاعات از کاربران و ارسال آنان برای سرويس دهنده ، محسوب می گردند.

صفحات وب ، فرم های HTML ، فرم های وب

همزمان با عرضه يک فن آوری جديد، مجموعه ای از واژه ها و اصطلاحات جديد نيز مطرح می گردد. ASP.NET نيز از اين قاعده مستثنی نبوده و تمامی واژه هائی که از آنان به منظور تشريح عمليات يک صفحه وب ساده استفاده می گردد ، بهنگام شده تا نشاندهنده عمليات واقعی و پردازش های مرتبط با فرم ها باشند . در ابتدا لازم است که با برخی از اين واژه ها بيشتر آشنا شويم :
• صفحات وب: يک صفحه وب،نظير يک بسته حاوی کد Html است که در آن از تگ های HTML که ابتدای آن با <html> و انتهای آن با < html /> مشخص می گردد ، استفاده می شود . صفحات وب بر روی يک ماشين خاص مستقر شده و سرويس دهنده وب مسئوليت پاسخگوئی به درخواست ها را برعهده خواهد داشت . محتويات يک صفحه وب می تواند شامل متن ، گرافيک ، صوت ، فيلم و يا کد های نوشته شده با استفاده از تکنولوژی هائی نظير جاوا اسکريپت باشد .
• فرم HTML : يک فرم Html ، صفحه وبی است که در آن از يک و يا چندين کنترل فرم به منظور دريافت اطلاعات کاربران و ارسال آنان برای سرويس دهنده استفاده می گردد . button ,textbox , checkbox و dropdown lists ، متداولترين کنترل های استفاده شده در فرم ها محسوب می گردند. کاربران ، اطلاعاتی را از طريق فرم و با توجه به کنترل های موجود بر روی آن وارد نموده و در ادامه با فشردن دکمه Submit آنان را برای سرويس دهنده وب ، ارسال می نمايد . با اين که به منظور ارسال اطلاعات بر روی سرويس دهنده به چيزی بيش از HTML ، نياز نخواهد بود ، سرويس دهنده نيازمند بکارگيری تکنولوژی های اضافه ای ( مثلا" ASP.NET ) به منظور انجام عمليات و پردازش های لازم در ارتباط با اطلاعات دريافتی است . صفحات HTML شامل فرم هائی می باشند که عموما" با انشعاب html ( و يا در برخی موارد htm )، ذخيره می گردند.
• فرم های وب : فرم های وب ، مشابه فرم های HTML بوده و با مشاهده شکل ظاهری آنان نمی توان تفاوت موجود بين آنان را تشخيص داد . با استفاده از کد ASP.NET در فرم های وب و ايجاد ارتباط بين هر يک از کنترل های موجود بر روی يک فرم وب و روتين های نوشته شده ، می توان فرم هائی کاملا" پاسخگو را ايجاد نمود . معمولا" در مواردی که از واژه "فرم وب " ، استفاده می گردد ، بنوعی به دو بخش کد جداگانه در آنان اشاره می گردد :
تمپليت های Html : اين تمپليت ها شامل اطلاعات مربوط به لی اوت صفحه و کنترل های سرويس دهنده ASP.NET می باشند . مسئوليت نمايش فرم وب بر روی مرورگر به عهده اين بخش واگذار شده است .
کد ASP.NET ، منطق پردازش لازم در ارتباط با فرم های وب را ارائه می نمايد . بخش فوق ، مسئوليت توليد محتويات پويا را که توسط فرم وب نمايش داده خواهد شد ، برعهده دارد .
• فرم های ASP.NET : با اين که ممکن است يک فرم وب به شکل يک فرم Html نيز ارائه گردد ، بخاطر داشته باشيد که آنان دارای ماهيتی کاملا" متفاوت می باشند. زمانی که از ASP.NET بهمراه فرم ها استفاده نموده و يک فرم وب را ايجاد می نمائيم ، می توان از کنترل های سرويس دهنده ASP.NET همراه تگ های HTML استفاده بعمل آورد . کنترل های سرويس دهنده ، علاوه بر افزايش توان عملياتی برخی از عناصر HTML ( نظير کنترل های فرم ) ، پتانسيل های جانبی ديگری را نيز ارائه می نمايند . يک کنترل سرويس دهنده دارای شکل ظاهری مشابه عناصر HTML می باشد . ولی عملا" نقطه ای در صفحه را مشخص می نمايد که سرويس دهنده نيازمند توليد يک عنصر شبه HTML مرتبط با آن است . مزيت روش فوق در مقابل استفاده از کنترل های فرم ، ايجاد محتويات پويا برای فرم قبل از ارسال آن برای مرورگر است . برای ايجاد محتويات پويا بر روی يک فرم، می توان کد مورد نظر را در هر محلی از صفحه مستقر نمود. بدين منظور از تگ <script>، استفاده می گردد. از تگ فوق می توان در هرمحلی از فايل aspx . ، استفاده بعمل آورد .( معمولا" به منظور افزايش خوانائی برنامه آن را در ابتدای صفحه قرار داده و در موارد ديگر می توان تمامی کدهای نوشته شده را در يک فايل جداگانه ، قرار داد ) .
امکان استفاده از کنترل های فرم های Html برای فرم های وب نيز وجود دارد . ASP.NET بهمراه مجموعه ای از کنترل های فرم اختصاصی که بر روی سرويس دهنده اجراء می گردند ، ارائه شده است . معمولا" سعی می گردد در فرم های وب از کنترل های سرويس دهنده استفاده شود ، چراکه کنترل های فوق قادربه بخاطر سپردن وضعيت کنترل های متفاوت ( نظير درج متن در يک textbox ) نيز می باشند .
اجازه دهيد با چهار اصطلاح جديدی که به آنان اشاره گرديد ، بطور خلاصه آشنا شويم :
• يک صفحه وب ، صرفا" شامل تگ های HTML می باشد ( اين نوع صفحات می توانند شامل اسکريپت های نوشته شده با يک زبان اسکريپت نويسی نظير جاوااسکريپت نيز باشند ) .
• يک فرم HTML ، صفحه وبی است که در آن از کنترل های فرم HTML استفاده شده است .
• يک فرم وب ، صفحه ای است که در آن کد ASP.NET بهمراه يک تمپليت HTML ، استفاده شده است .
• يک فرم ASP.NET ، فرم وبی است که در آن از کنترل های سرويس دهنده ASP.NET استفاده شده است .

مدل سرويس گيرنده - سرويس دهنده

• سرويس دهنده وب ، امکان دسترسی به صفحات وب شما رادر تمام مدت روز و برای هر متقاصی فراهم می نمايد. ارائه فضای لازم به منظور سازماندهی و ذخيره سازی صفحات وب نيز از جمله وظايف سرويس دهنده وب است .
• زمانی که شما درخواست يک صفحه وب را از يک سايت می نمائيد ، بطور اتوماتيک با سرويس دهنده وب آن ارتباط برقرار می نمائيد . فرآيند ارسال آدرس درخواستی شما ( URL ) ، "ايجاد يک درخواست برای سرويس دهنده" ، ناميده می شود . سرويس دهنده وب ،درخواست ارسالی شما را بررسی نموده و پس از يافتن صفحه درخواستی و اجرای کد مندرج در آن ، پاسخ لازم به درخواست شما را خواهد داد . فرآيند فوق ، "پاسخ به مرورگر" ناميده می شود . در تمامی فرآيند فوق ، مرورگر وظيفه و يا نقش سرويس گيرنده را برعهده داشته و سرويس دهنده وب ، نقش سرويس دهنده را برعهده دارد . در سناريوی فوق که به "ارتباط سرويس گيرنده و سرويس دهنده " ، مشهور است ، سرويس دهنده مسئوليت ذخيره سازی ، تفسير و توزيع داده را برعهده داشته و سرويس گيرنده با دستيابی به سرويس دهنده امکان دريافت داده را پيدا می نمايد .

پروتکل HTTP

• به منظور مبادله اطلاعات بين سرويس گيرنده و سرويس دهنده از پروتکل HTTP استفاده می گردد . از پروتکل فوق ، به منظور انتقال اطلاعات از يک ماشين به ماشين ديگر در وب استفاده می گردد .زمانی که شما يک پيشوند // :http را مشاهده می نمائيد ، نشاندهنده اين موضوع است که از پروتکل HTTP استفاده خواهد شد . HTTP ، پروتکل پيش فرض استفاده شده توسط مرورگرهای وب می باشد . مثلا" در صورتی که شما آدرس www.srco.ir را در بخش آدرس مرورگر خود تايپ نمائيد ، مرورگر بطور اتوماتيک آن را به http://www.srco.ir تبديل می نمايد .
• پيام ارسالی توسط مرورگر به سرويس دهنده وب که در آن درخواست يک صفحه خاص شده است را HTTP Request می نامند . زمانی که سرويس دهنده وب درخواست فوق را دريافت می نمايد ، پس از بررسی آن و در صورت يافتن فايل درخواستی آن را با فرمت Html برای مرورگر ارسال می نمايد( HTTP Response ) . در صورتی که سرويس دهنده وب ، فايل درخواستی را پيدا ننمايد با ارسال يک پيام خطاء سرويس گيرنده را از اين موضوع آگاه می نمايد .
• HTTP يک پروتکل Stateless است . در اين رابطه پس از ايجاد درخواست و پاسخ به آن ، ارتباط ايجاد شده منطقی بين سرويس گيرنده و سرويس دهنده قطع خواهد شد . در صورتی که سرويس گيرنده درخواست يک صفحه ديگر از سرويس دهنده را داشته باشد ، مجددا" يک ارتباط ديگر و بدون بخاطرسپردن و يا يادآوری عمليات قبلی ، ايجاد می گردد . ( تک تراکنشی )

نحوه ارائه يک صفحه وب در ASP.NET

• مرحله اول : سرويس گيرنده درخواست يک صفحه وب را می نمايد .
• مرحله دوم : سرويس دهنده بررسی لازم در خصوص يافتن فايل درخواستی را آغاز می نمايد . در صورتی که فايل فوق از نوع صفحات ASP.NET باشد ، می بايست کد موجود در آن به منظور توليد Html مورد نياز اجراء شده و ماحصل عمليات برای مرورگر ، ارسال گردد .
• مرحله سوم : در صورتی که فايل درخواستی دارای پسوند aspx. باشد ، سرويس دهنده آن را به منظور پردازش در اختيار aspnet_isapi.dll ( مرتبط با سرويس دهنده وب ) ، قرار خواهد داد . aspnet_isapi.dll چيز زيادی را خود انجام نداده و صرفا" کد ASP.NET را به مقصد CLR) Common Language Runtime) ، هدايت می نمايد. در صورتی که کد ASP.NET قبلا" کمپايل نشده باشد، در ادامه ترجمه شده و در نهايت اجراء و خروجی آن به صورت Html ايجاد می گردد . ( توليد پويای HTML ) .
• مرحله چهارم : HTML توليد شده در مرحله قبل برای مرورگر ، ارسال می گردد .
• مرحله پنجم : مرورگر صفحه وب را نمايش خواهد داد .
پس از آشنائی با مدل سرويس گيرنده - سرويس دهنده ، پروتکل HTTP و نحوه ارائه يک صفحه وب در ASP.NET به بررسی فرم های HTML خواهيم پرداخت . پس از آشنائی با فرم های HTML ، امکان معرفی و استفاده سريعتر از کنترل های سرويس دهنده ASP.NET ، فراهم می گردد .

تگ <form>

تگ <form> يک تگ container است که از آن به منظور نمايش مجموعه ای از کنترل های فرم که پياده کنندگان تمايل به استفاده از آنان به منظور ارسال اطلاعات برای سرويس دهنده را دارند ، استفاده می گردد . ما همچنان نيازمند استفاده از ساير تکنولوژی ها بر روی سرويس دهنده به منظور پشتيبانی و انجام پردازش های لازم در ارتباط با داده های ارسالی از سرويس گيرنده می باشيم .
در مرورگر نت اسکيپ قبل ازنسخه شماره شش ، کنترل های فرم نمی توانند بدون استفاده از تگ <form> نمايش داده شوند . به عبارت ديگر تمامی کنترل های فرم نظير textbox و radio button می بايست درون تگ <form> ، قرار داده شوند ، در غير اينصورت مرورگر نت اسکيپ قادر به نمايش آنان نخواهد بود . در IE و Opera همچنان می توان کنترل های فرم را بدون استفاده از تگ <form> ، نمايش داد ، ولی در صورتی که قصد ارسال داده برای سرويس دهنده وجود داشته باشد ، می بايست کنترل ها درون يک تگ <form> ، قرار گيرند . بهمراه تگ فوق از خصلت های متعددی ( يازده مورد ) استفاده می گردد . در ادامه به بررسی صرفا" دو نمونه ضروری آنان خواهيم پرداخت ( action ، method ) .
خصلت action ، صفحه وب مورد نظر به منظور دريافت داده های درج شده بر روی يک فرم را مشخص می نمايد . نحوه استفاده از خصلت action به صورت زير است :

<form action="testpage.aspx" ... >


زمانی که يک فرم برای سرويس دهنده ارسال می گردد ، می بايست صفحه وبی که قرار است اطلاعات به آن تحويل داده شوند ، مشخص گردد . دربرخی موارد ممکن است پاسخ يک صفحه برای خود آن صفحه ارسال گردد .
خصلت method : خصلت فوق ، روش استفاده شده به منظور ارسال داده در پروتکل HTTP را مشخص می نمايد . به منظور ارسال داده از روش های متفاوتی استفاده می گردد . روش های GET و POST دو نمونه متدوال در اين زمينه می باشند .
متد GET : در اين روش داده موجود بر روی يک فرم که قرار است برای سرويس دهنده ارسال شود ، به انتهای URL و به شکل " نام / مقدار" ، اضافه می گردد. متد GET، گزينه پيش فرض در خصوص نحوه ارسال اطلاعات يک فرم می باشد .

?sitename =Srco


اولين بخش از زوج "نام / مقدار" ، نشاندهنده "نام" و دومين بخش مقدار مورد نظر به منظور ذخيره سازی را نشان می دهد. نام و مقدار متناظر با آن به صورت اتوماتيک از يک عنصر موجود بر روی فرم نظير يک textbox ويا checkbox ، اخذ می گردند. نام کنترل استفاده شده بر روی فرم ، نام استفاده شده در متد GET بوده و محتوياتی را که کاربر در کنترل مورد نظر درج و يا انتخاب می نمايد، مقدار موردنظر را مشخص می نمايد . در مثال فوق ، 'sitename' ، نام مورد نظر بوده و 'Srco' ، مقدار مرتبط با آن است . مرورگر در زمان ارسال صفحه برای سرويس دهنده ، اطلاعات فوق را به صورت اتوماتيک به URL اضافه می نمايد:

http://www.srco.ir/testpage.aspx?sitename =Srco


امکان استفاده بيش از يک زوج نام /مقدار بهمراه يک URL وجود خواهد داشت . در چنين مواردی هر زوج توسط علامت "&" ( ampersand ) ، از يکديگر جدا می گردند .

http://www.srco.ir/testpage.aspx?sitename =Srco&webmaster=TEST


بخش اضافه شده به URL را query string می گويند . GET تنها روش موجود به منظور ارسال داده بين سرويس گيرنده و سرويس دهنده نمی باشد و در اين رابطه از متد POST نيز استفاده می گردد .
متد POST : يکی از معايب ارسال داده با استفاده از query string ، به ماهيت ارسال اطلاعات برمی گردد . درصورتی که ضرورتی و يا علاقه ای به نمايش داده ارسالی در آدرس URL را نداشته باشيم، می توان از متد POST استفاده نمود . عملکرد روش فوق تا اندازه ای شبيه متد GET بوده و تنها تفاوت اساسی بين آنان به ارسال داده در بدنه HTTP Requets برمی گردد ( نه به عنوان بخشی همراه URL ) . سياست فوق ، ايمنی بسيار بالائی را نسبت به متد GET ارائه نمی نمايد و ما صرفا" داده ارسالی را در URL مشاهده نمی نمائيم . متد POST ، همچنين امکان ارسال حجم بيشتری از اطلاعات را فراهم می نمايد. برخی از سرويس دهندگان وب دارای محدوديت حجم متن ارسالی همراه يک URL می باشند. متد POST ، دارای چنين محدوديتی نمی باشد.
درASP.NET به منظور انتخاب روش ارسال اطلاعات در يک فرم ، گزينه ای وجود نداشته و تمامی فرم ها با استفاده از متد POST برای سرويس دهنده ارسال می گردند .
کنترل های فرم HTML
برای تعريف اکثر کنترل های فرم Html از تگ <Input> ، استفاده می گردد.در ادامه با کنترل های فرم HTML که امکان استفاده از آنان به همراه صفحات وب وجود دارد ، بيشتر آشنا می شويم .

نام کنترل

TextBox

شکل ظاهری

 

توضيحات

فيلدهای تک خطی که می توان در آنان متن دلخواهی را تايپ نمود.

نحوه پياده سازی

استفاده از تگ <input> که خصلت typeآن textدر نظر گرفته می شود .


نام کنترل

Text Area

شکل ظاهری

 

توضيحات

فيلدهای چندخطی که می توان در آنان متن دلخواهی را تايپ نمود . 

نحوه پياده سازی

استفاده از تگ <textarea>

 

نام کنترل

Radio buttons

شکل ظاهری

 

  انتخاب اول  انتخاب دوم  انتخاب سوم

توضيحات

دکمه هائی به منظور ارائه چندين گزينه که صرفا" امکان انتخاب يکی از آنان وجود خواهد داشت.

نحوه پياده سازی

استفاده از تگ <input> که خصلت typeآن radioدر نظر گرفته می شود.


نام کنترل

Check boxes

شکل ظاهری

 

  انتخاب اول  انتخاب دوم  انتخاب سوم

توضيحات

دکمه هائی به منظور ارائه چندين گزينه که امکان انتخاب تعدادی از آنان وجود خواهد داشت.

نحوه پياده سازی

استفاده از تگ <input> که خصلت typeآن checkboxدر نظر گرفته می شود.


نام کنترل

List boxes

شکل ظاهری

 

 

توضيحات

دکمه هائی به منظور ارائه يک منوی Dropdownکه امکان انتخاب يک و يا  چندين آيتم را در اختيار کاربر قرار می دهد .

نحوه پياده سازی

استفاده از تگ <select>


نام کنترل

Submit buttons

شکل ظاهری

 

توضيحات

دکمه هائی به منظور ارسال فرم های HTMLبرای سرويس دهنده

نحوه پياده سازی

 استفاده از تگ <input> که خصلت typeآن submitدر نظر گرفته می شود.


نام کنترل

Reset buttons

شکل ظاهری

 

 

توضيحات

 دکمه های resetنمودن محتويات يک فرم HTMLکه هنوز ارسال نشده است .

نحوه پياده سازی

 استفاده از تگ <input> که خصلت typeآن Resetدر نظر گرفته می شود.

نام کنترل

Normal buttons

شکل ظاهری

 

 

توضيحات

باعث فعال شدن رويداد مربوطه می گردند .

نحوه پياده سازی

 استفاده از تگ <input> که خصلت typeآن buttonدر نظر گرفته می شود.


نام کنترل

Password fields

شکل ظاهری

 

 

توضيحات

کنترل فوق ، مشابه textboxاست ، با اين نفاوت مهم که هر چيزی را که درون آن تايپ می گردد،توسط علامت ستاره نمايش داده می شود .

نحوه پياده سازی

 استفاده از تگ <input> که خصلت typeآن passwordدر نظر گرفته می شود.


نام کنترل

Hidden filelds

شکل ظاهری

 

  ندارد

توضيحات

فيلدهای مخفی که در HTMLمقداردهی شده و همراه ساير داده های فرم ارسال می گردند.

نحوه پياده سازی

 استفاده از تگ <input> که خصلت typeآن hidedenدر نظر گرفته می شود.

همانگونه که مشاهده می شود از تگ <input> در اکثر کنترل های فرم HTML استفاده می گردد. به همراه تگ <input> ، صرفا" می توان از چهار خصلت زير استفاده کرد :
• name : از خصلت فوق به منظور شناسائی کنترل در کد ASP.NET ، استفاده می گردد .
• type : خصلت فوق ، نوع کنترل استفاده شده را مشخص می نمايد. گزينه های معتبر موجود در اين رابطه Submit , Reset , Radio , Checkbox ,Hidden , Text ,Password و Button می باشند ( در اين رابطه گزينه های image و file option نيز وجود دارد ) .
• Value : از خصلت فوق به منظور مشخص نمودن مقادير پيش فرض برای برخی کنترل های button و يا text استفاده می گردد .
• checked : از خصلت فوق به منظور مشخص نمودن گزينه انتخابی پيش فرض در برخی کنترل های نظير کنترل radio استفاده می گردد .( همزمان با مشاهده فرم توسط کاربر ، گزينه مورد نظر به صورت پيش فرض انتخاب شده است ) .
از تمامی خصلت های فوق به منظور دستيابی و پردازش کنترل های فرم در کد ASP.NET ، استفاده می گردد .

نحوه استفاده از تگ <form> در ASP.NET

ASP.NET دارای مجموعه ای از کنترل های فرم می باشد که می توان از آنان مشابه کنترل های فرم HTML ، استفاده بعمل آورد . مهمترين تفاوت موجود در اين رابطه به توليد پويای آنان برروی سرويس دهنده و ارسال آنان برای سرويس گيرنده برمی گردد . يکی ديگر از تفاوت های موجود ، نحوه تعريف يک "فرم" است :

<form runat="server"  >
    .... ASP.NET form ... >
</form>


خصلت runat به سرويس دهنده وب اعلام می نمايد که می بايست فرم را پردازش نمايد . ( صرفا" مسئوليت سرويس دهنده وب ، ارسال فرم برای سرويس گيرنده نبوده و در اين رابطه می بايست پردازش های لازم قبل از ارسال فرم نيز انجام شود ) . همانگونه که مشاهده می گردد در تعريف فرم فوق، مقدار خاصی به خصلت method نسبت داده نشده است. ASP.NET خود قادر به تشخيص و ارائه مقادير مورد نظر می باشد . در حقيقت تمامی فرم های ASP.NET با استفاده از متد POST ارسال می گردند . تگ <form> ارائه شده به همراه ASP.NET ، امکان پردازش کنترل های موجود بر روی يک فرم را برای سرويس دهنده فراهم می نمايد . در ASP.NET نسخه های سفارشی شده از کنترل ها در مقايسه با کنترل های فرم HTML با هدف ارائه تسهيلات لازم به منظور پردازش فرم ها و حل برخی مشکلات موجود نظير برخورد با ماهيت Stateless بودن پروتکل HTTP ، ارائه شده است.

کنترل های سرويس دهنده ASP.NET

در اين بخش به بررسی ويژگی ها و نحوه عملکرد هر يک از کنترل های سرويس دهنده ASP.NET پرداخته و آنان را با کنترل های استفاده شده در فرم های HTML مقايسه می نمائيم .

کنترل <asp:label>

کنترل فوق يکی از متداولترين کنترل های موجود در ASP.NET محسوب می گردد . با استفاده از کنترل label می توان متن مورد نظر را برروی صفحات وب ASP.NET نمايش داد . کنترل فوق همانند هر کنترل معمولی HTML دارای مجموعه ای از خصلت ها بوده که با مقداردهی مناسب آنان می توان رفتار و شکل ظاهری کنترل را متناسب با اهداف مورد نظرمشخص نمود . جدول زير برخی از متداولترين خصلت های کنترل label را نشان می دهد :

خصلت 

عملکرد

Backcolor

رنگ زمينه labelرا مشخص می نمايد .

ForeColor

رنگ رويه labelرا مشخص می نمايد .

Height

 بلندی  Labelبر حسب پيکسل را مشخص می نمايد .

ID

تعريف يک شناسه منحصر بفرد برای يک Label

Visible

با نسبت دادن مقدار Trueو False، نمايش و يا عدم نمايش يک Lableمشخص می گردد .

Width

پهنای  کنترل labelرا مشخص می نمايد.


مثال : به منظور ايجاد يک کنترل label با حداقل اطلاعات موردنياز می توان صرفا" از خصلت های id و runat استفاده نمود :

<asp:label  id="message1"   forecolor = "Red"  runat="server" > Test1 </asp:label>


خصلت id ، يک نام منحصربفرد به منظور شناسائی کنترل <label> را مشخص می نمايد.بدين ترتيب امکان مراجعه به آن از طريق کد ASP.NET فراهم می گردد . خصلت runat = sever به سرويس دهنده اعلام می نمايد که کنترل را پردازش و کد معادل HTML را به منظور ارسال برای سرويس گيرنده ، توليد نمايد .
در صورتی که قصد داشته باشيم که متن مورد نظر را با يک رنگ خاص نمايش دهيم ، کنترل label را به صورت زير استفاده خواهيم کرد :

<asp:label  id="message1"   Text = "Test1"  runat="server"  / >


همچنين می توان از خصلت text به منظور مشخص نمودن متن مورد نظر جهت نمايش ، استفاده نمود .در کد زير ، تگ پايان حذف و در مقابل از علامت "/" که نشاندهنده پايان تگ است ، استفاده شده است .
<asp:label id="message1" Text = "Test1" runat="server" / >
پيشوند <asp:> ، اعلام می نمايد که کنترل label از مجموعه کنترل های از قبل ساخته شده ASP.NET است .
: تايپ کد زير با استفاده از يک ويرايشگر

<html dir =rtl>
<head>
<title> Label Test </title>
</head>
<body>
<h1>نحوه استفاده ازlabel </h1>
<br />
ضمن تشکر از
<asp:label id="Message1" runat="server"  text=" شما"/>
،در مجموعه مقالاتی کهدر رابطه با کنترل هایASP.NET ارائه می شود،
<asp:label id="Message2" runat="server"  text="قصد داريم"/>
هر يک از آنان را به صورت جداگانه بررسی نمائيم
</body>
</html>


برای تمامی اهداف و خواسته ها يک کنترل label را می توان با يک کنترل HTML ، جايگزين نمود. تنها تفاوت موجود به اين موضوع برمی گردد که کنترل فوق بر روی سرويس دهنده اجراء می گردد .با مشاهده کد HTML از طريق برنامه مرورگر خود ، اطلاعات زير را مشاهده خواهيم کرد :

<html dir =rtl>
<head>
<title> Label Test </title>
</head>
<body>
<h1>نحوه استفاده ازlabel </h1>
<br />
ضمن تشکر از
<span id="Message1"> شما</span>
،در مجموعهمقالاتی که در رابطه با کنترل هایASP.NET ارائه می شود،
<span id="Message2">قصد داريم</span>
هر يکاز آنان را به صورت جداگانه بررسی نمائيم
</body>
</html>


همانگونه که مشاهده می گردد ، کنترل <asp:label> به معادل تگ <span> در HTML ترجمه شده است ( دارای عملکردی مشابه می باشند ) .

نحوه استفاده از خصلت های کنترل در يک برنامه ASP.NET

تا اين مرحله با کنترل Label و نحوه استفاده از آن در يک صفحه وب ، آشنا شديم . در اين رابطه يک سوال باقی است و اين که چگونه می توان از خصلت های کنترل فوق در کدهای نوشته شده ASP.NET استفاده نمود.بدين منظور می توان در ابتدای HTML ، کد مورد نياز ASP.NET را اضافه نمود . در ابتدا خصلت text را از ابتدای دو کنترل فوق حذف می نمائيم .

   ...
<asp:label id="Message1" runat="server"  />
،در مجموعه مقالاتی که در رابطه با کنترل هایASP.NET ارائه میشود،
<asp:label id="Message2" runat="server" />
هر يک از آنان رابه صورت جداگانه بررسی نمائيم
  ...

در ادامه ، اسکريپت زير را قبل از کد HTML اضافه می نمائيم .

<script language="vb" runat="server">
Sub Page_Load()
   Message1.Text = "کاربرانمحترم"
   Message2.Text = "تصميم داريم"
End Sub
</script>
<html>
    ...
</html>


با اعمال تغييرات فوق ، مقداردهی خصلت Text مربوط به کنترل label از طريق کد نوشته شده ASP.NET ، انجام می شود.
در مثال فوق ، با استفاده از روتين Page_Load که در زمان استقرار صفحه درخواستی در حافظه ، اجراء می گردد ، به خصلت text هر يک از کنترل های Label دستيابی و مقدار مورد نظر به آنان نسبت داده شده است . ( اختصاص پويای متن مورد نظر به يک کنترل label ) .

Message1.Text = "کاربرانمحترم"
Message2.Text = "تصميم داريم"
  ...

تمامی کنترل های سرويس دهنده HTML به صورت اشيائی جداگانه ايجاد شده و می توان از طريق کد ASP.NET به آنان دستيابی داشت . به منظور دستيابی به هر يک از خصلت های يک کنترل سرويس دهنده ، می توان از گرامر زير استفاده کرد :

[ServerControl].[ServerControlAttribute]


مثلا" به منظور غير فعال نمودن وضعيت نمايش، می توان خصلت visible را به صورت زير مقداردهی نمود :

Message.Visible="false"


کنترل <asp:dropdownlist>
کنترل فوق يکی از بهترين کنترل های موجود به منظور نشان دادن اهميت و ضرورت پردازش يک کنترل بر روی سرويس دهنده می باشد. قبل از بررسی کنترل فوق ، در ابتدا با معادل آن در HTML بيشتر آشنا می شويم . Dropdown listbox ها در HTML با استفاده از تگ <select> و <option> پياده سازی می گردند ، برای هر option از يک تگ شروع و يک تگ پايان <option> ، درون تگ <select> ، استفاده می گردد :

<select  name = "City" >
   <option> تهران</option>
  <option > اهواز</option>
   <option> شيراز</option>
</select>

به منظور ايجاد يک list control در ASP.NET که عملکردی مشابه کد فوق را داشته باشد ، از کد زير استفاده می شود :

<asp:dropdownlist id="City" runat="server">
   <asp:listitem> تهران</asp:listitem>
   <asp:listitem> اهواز</asp:listitem>
   <asp:listitem>شيراز</asp:listitem>
</asp:dropdownlist>


کد فوق نسبت به کد معادل HTML ، دارای سه تفاوت اساسی است :
• جايگزينی تگ <asp:dropdownlist> با تگ <select>
• جايگزينی تگ <asp:listitem> با تگ <option>
• جايگزينی خصلت Id با name
از لحاظ شکل ظاهری کنترل <asp:dropdownlist> ، مشابه کنترل dropdown list در HTML است .
: تايپ کد زير با استفاده از يک ويرايشگر

<script runat="server" language="vb">
Sub Page_Load()
 if Page.IsPostback then
   Message.Text = "شما شهرستان" + list1.SelectedItem.Value + " را انتخاب نموده ايد"
 end if
End Sub
</script>
<html dir = rtl>
<head><title>Drop Down Example</title></head>
<body>
<asp:label id="Message" runat="server"/> <br />
<form runat="server">
برای مسافرتکدام شهر را انتخاب می نمائيد ؟<br /><br />
<asp:dropdownlist id="list1" runat="server">
<asp:listitem> تهران</asp:listitem>
<asp:listitem> اهواز</asp:listitem>
<asp:listitem>شيراز</asp:listitem>
</asp:dropdownlist><br /><br /><br /><br />
<input type="Submit" Value ="ارسال درخواست" >
</form>
</body>
</html>


در صورت مشاهده View|Source در مرورگر ، کد زير نمايش داده می شود .

<<html dir = rtl>
<head>
<title>Drop Down Example</title>
</head>
<body>
<span id="Message">شما شهرستان اهواز را انتخاب نموده ايد</span> <br />
<form name="_ctl0" method="post" action="DropdownlistTest.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE" value="dDwtMTMyNTU5Mzc0Njt0PDtsPGk8MT47PjtsPHQ8cDxwPGw8VG
V4dDs+O2w82LTZhdinINi02YfYsdiz2KrYp9mGICAgINin2YfZiNin2LIgINix2
Kcg2KfZhtiq2K7Yp9ioINmG2YXZiNiv2Ycg2KfZitivIDs+Pjs+Ozs+Oz4+Oz5
nBTPLfX3RX+GXzS7SG4YwAQcC9Q==" />

برای مسافرت کدام شهر را انتخاب می نمائيد ؟<br /><br />
<select name="list1" id="list1">
<option value=" تهران"> تهران</option>
<option selected="selected" value=" اهواز"> اهواز</option>
<option value="شيراز">شيراز</option>

</select><br /><br /><br /><br />
<input type="Submit" Value ="ارسال درخواست" >
</form>
</body>
</html>


• تمامی اطلاعات با فرمت HTML برای سرويس گيرنده اارسال می گردد.
• با استفاده از تگ <form> و مقدار دهی خصلت runat به server يک فرم تعريف و به ASP.NET اعلام می شود که فرم بر روی سرويس دهنده اجراء می گردد . در صورتی که تعريف فوق را با آن چيزی که در مرورگر نمايش داده می شود ، مشاهده می نمائيم ، تفاوت های زيادی را مشاهده خواهيم کرد :

<form name="_ctl0" method="post" action="DropdownlistTest.aspx" id="_ctl0">


• ASP.NET ، چهار خصلت جديد را ايجاد نموده است . خصلت های name و id اهداف يکسانی را دنبال می نمايند . ( مشخص نمودن انحصاری فرم ) . همانگونه که قبلا" اشاره گرديد فرم های HTML نيازمند يک صفحه به منظور دريافت داده و يک روش به منظور ارسال اطلاعات می باشند. ما هيچکدام از موارد فوق را در کد ASPX .، مشخص ننموده ايم . بنابراين ASP.NET ، آنان را برای ما مشخص نموده است . خصلت action به صفحه يکسانی که ما اجراء نموده ايم ، اشاره داشته و پاسخ ها را برای آن ارسال می نمايد . همچنين به صورت پيش فرض، روش ارسال اطلاعات به صورت POST در نظر گرفته شده است .
• کنترل های سرويس دهنده ASP.NET داده های موجود بر روی فرم را برای کد ASP.NET ارسال می نمايند . بدين منظور و در جهت دستيابی به آنان از طريق کد ASP.NET ، از روتين زير استفاده شده است :

<script runat="server" language="vb">
Sub Page_Load()
 if Page.IsPostback then
   Message.Text = "شما شهرستان" + list1.SelectedItem.Value + " را انتخاب نموده ايد"
 end if
End Sub
</script>


• در روتين page_Load ، بررسی لازم در خصوص انتخاب يک آيتم توسط کاربر ، انجام شده و در ادامه يک پيام مناسب به منظور تائيد انتخاب انجام شده ، برای کاربر نمايش داده می شود. در صورتی که تاکنون انتخابی صورت نگرفته باشد ، پيامی در کنترل <label>، نمايش داده نمی شود . اولين خط موجود در روتين ، نشاندهنده اين موضوع است که آيا قبلا" صفحه برای کاربر ارسال شده است ؟ بدين منظور ازشی Page استفاده شده است . شی فوق ، يک رکورد از وضعيت اطلاعاتی يک فرم را که توسط يک کاربر ارسال شده است در IsPostback نگهداری می نمايد . در صورتی که فرم قبلا" نيز ارسال شده باشد ، IsPostBack مقدار true و در غير اين صورت مقدار False را برمی گرداند . کد محصور بين if و end if ، صرفا" در زمانی که فرم مجددا" برای کاربر ارسال شده باشد ، اجراء می گردد. بنابراين اگر اولين مرتبه ای است که کاربر فرم را مشاهده می نمايد ، کد فوق اجراء نخواهد شد .

کنترل <asp:listbox>

کنترل فوق ، شباهت زيادی به کنترل dropdown listbox دارد. همانگونه که می دانيد برای ايجاد يک dropdown در فرم های HTML از تگ <select> استفاده می شود. در ASP.NET بدين منظور از کنترل <asp:listbox> ، استفاده می گردد . با استفاده از کنترل فوق ، امکان انتخاب چندين گزينه وجود خواهد داشت . کنترل

 

<asp:listbox id="list1" runat="server" selectionmode="multiple">
   <asp:listitem>تهران</asp:listitem>
   <asp:listitem>اهواز</asp:listitem>
   <asp:listitem>شيراز</asp:listitem>
</asp:listbox>


خصلت selectionmode امکان انتخاب يک و يا چندين گزينه را مشخص می نمايد . ( مقدار پيش فرض انتخاب يک گزينه است ) .
: تايپ کد زير با استفاده از يک ويرايشگر

<script runat="server" language="vb">
Sub Page_Load()
Dim msg As String = "شما شهرستان( شهرستان های ) زير را برای مسافرت انتخاب نموده ايد: <br />"

if Page.IsPostback then
  If  list1.Items(0).Selected Then  msg = msg & list1.Items(0).Text & "<br />"
  If  list1.Items(1).Selected Then  msg = msg & list1.Items(1).Text & "<br />"
  If  list1.Items(2).Selected Then  msg = msg & list1.Items(2).Text & "<br />"
  Message.Text = msg
end if

End Sub
</script>

<html dir=rtl>
<head>
<title>Drop Down List Example</title>
</head>
<body>
<asp:label id="Message" runat="server"/>
<br />
<form runat="server">
برای مسافرت کدام شهر را انتخاب می نمائيد ؟<br /><br />
<asp:listbox id="list1" runat="server" selectionmode="multiple">
<asp:listitem>تهران</asp:listitem>
<asp:listitem>اهواز</asp:listitem>
<asp:listitem>شيراز</asp:listitem>
</asp:listbox>
<br /><br />
<input type="Submit" Value ="ارسالدرخواست">
</form>
</body>
</html>

کنترل <asp:textbox>

کنترل فوق يک نسخه جديد از کنترل textbox درفرم های HTML است .با استفاده از کنترل فوق ، امکان پياده سازی کنترل های textarea و password نيز فراهم می گردد . با استفاده از کنترل textarea ، امکان درج چندين خط داده وجود خواهد داشت .جدول زير برخی از خصلت های کنترل textbox را نشان می دهد :

خصلت 

عملکرد

textmode

نوع کنترل textboxرا مشخص می نمايد .
در صورتی که خصلت فوق مقداری را دارا نباشد ، يک کنترل textboxمعمولی را داشته که صرفا" می توان در آن يک خط داده درج نمود . در صورتی که خصلت فوق مقدار multilineرا دارا باشد ، امکان درج چندين خط فراهم شده و در صورتی که خصلت فوق مقدار passwordرا دارا باشد ، امکان درج يک خط داده که محتويات آن نمايش داده نخواهد شد ، فراهم می گردد .

Rows

تعداد خطوطی را که textboxمی تواند داشته باشد ، مشخص می نمايد . اين خصلت زمانی کار می کند که قبلا" مقدار خصلت textmodeمعادل multilineدر نظر گرفته شده باشد .

Columns

تعداد ستون مورد نظر برای يک Textboxرا مشخص می نمايد . اين خصلت زمانی کار می کند که قبلا" مقدار خصلت textmodeمعادلmultiline در نظر گرفته شده باشد .


مثال : نحوه استفاده از کنترل textbox
: تايپ کد زير با استفاده از يک ويرايشگر

<script runat="server" language="vb">

Sub Page_Load ( )
   Message1.Text = ""
   Message2.Text = ""
   Message3.Text = ""
   if  text1.Text <> "" then
       Message1.Text = "نام:" + text1.Text
   end if
   if  text2.Text <> "" then
       Message2.Text = "آدرس: " + text2.Text
   end if
   if  text3.Text <> "" then
      Message3.Text = "رمزعبور" + text3.Text
   end if
End Sub

</script>
<html dir=rtl>
<head>
<title>Text Box Example</title>
</head>
<body>
<asp:label id="Message1" runat="server" /><br />
<asp:label id="Message2" runat="server" /><br />
<asp:label id="Message3" runat="server" /><br />
<form runat="server">
نام: <asp:textbox id="text1" runat="server" /><br /><br />
آدرس: <asp:textbox id="text2" runat="server" rows=5  textmode="multiline" /><br /><br />
رمزعبور<asp:textbox id="text3" runat="server"  textmode="password" /><br /><br />
<input type="Submit" Value ="ارسالدرخواست">
</form>
</body>
</html>


• در مثال فوق از سه نوع کنترل textbox استفاده شده است :

<asp:textbox  id="text1" runat="server" />
<asp:textbox  id="text2" runat="server" rows=5  textmode="multiline" />
<asp:textbox id="text3" runat="server" textmode="password" />


• به منظور نمايش نتايج مربوط به هر يک از کنترل های فوق ، از سه کنترل label که هر يک دارای کد شناسائی منحصر بفرد خاص خود می باشند، استفاده شده است . بذين ترتيب ، می توان اطلاعات درج شده در هر يک از کنترل ها را در يک کنترل label جداگانه ، نمايش داد .

<asp:label  id="Message1" runat="server" /><br />
<asp:label  id="Message2" runat="server" /><br />
<asp:label  id="Message3" runat="server" /><br />

کنترل های <asp:radiobuttonlist> و <asp:radiobutton>
در HTML از کنترل radio button در مواردی که دارای چنيدين گزينه می باشيم و قصد داريم که کاربران يکی از آنان را انتخاب نمايند ، استفاده می گردد. در صورت انتخاب يک گزينه ، امکان انتخاب گزينه های ديگری وجود نخواهد داشت . به منظور پياده سازی radio button در HTML از تگ <input> که خصلت type آن radio در نظر گرفته می شود، استفاده می گردد . هر radio button موجود بر روی فرم دارای تگ اختصاصی input مربوط به خود بوده و هر radio button موجود در يک گروه خاص ، می بايست دارای خصلت name يکسانی باشند.
کنترل های <asp:radiobutton> و <asp:radiobuttonlist> ، با روشی متفاوت نسبت به معادل خود در HTML کار می نمايند . در HTML ، با استفاده از خصلت name به تمامی آنان يک نام يکسان نسبت داده شود .

A <input  name= "radio1" type"radio">
B <input  name= "radio1" type"radio">
C <input  name= "radio1" type"radio">

بدين ترتيب ، صرفا" امکان انتخاب يک گزينه وجود خواهد داشت . در کنترل <asp:radiobutton> ، امکان انجام چنين کاری وجود نداشته و در صورتی که تمامی آنان دارای نام يکسانی باشند ( با استفاده از خصلت id ) ، با يک پيام خطاء مواجه خواهيم شد:

A <asp:radiobutton  id="radio1" runat="server"  />
B <asp:radiobutton   id="radio1" runat="server"  />
C <asp:radiobutton   id="radio1" runat="server"  />

در اين رابطه لازم است که از کنترل <asp:radiobuttonlist> ، استفاده گردد. عملکرد کنترل فوق مشابه کنترل listbox می باشد . به منظور تعريف هر يک از آيتم ها درون کنترل <asp:radiobuttonlist> ، از <asp:listitem> ، استفاده می گردد .

<asp:radiobuttonlist  id="radio1" runat="server" >
  <asp:listitem  id="option1" runat="server" value="A" />
  <asp:listitem  id="option2" runat="server" value="B" />
  <asp:listitem  id="option3" runat="server" value="C" />
</asp:radiobuttonlist>


: تايپ کد زير با استفاده از يک ويرايشگر

<<script runat="server" language="vb">
Sub Page_Load()
 if Page.IsPostBack then
  Message.Text = "شما شهرستان" + radio1.SelectedItem.Value + " را برای مسافرتانتخاب نموده ايد"
 end if
End Sub
</script>
<html dir=rtl>
<head>
<title>Radio Button Example</title>
</head>
<body>
<asp:label id="Message" runat="server" />
<br /><br />
کدام شهرستان رابرای مسافرت انتخاب می نمائيد ؟
<br /><br />
<form runat="server">
<asp:radiobuttonlist id="radio1" runat="server">
<asp:listitem id="option1" runat="server" value="تهران" />
<asp:listitem id="option2" runat="server" value="اهواز" />
<asp:listitem id="option3" runat="server" value="شيراز" />
</asp:radiobuttonlist>
<br /><br />
<input type="Submit" Value ="ارسالدرخواست">
</form>
</body>
</html>


کنترل های <asp:checkbox> و <asp:checkboxlist>

کنترل های فوق مشابه کنترل های radio button می باشند ، با اين تفاوت که می توان چندين گزينه را انتخاب نمود. با استفاده از کنترل <asp:checkboxlist> امکان معرفی چندين گزينه در يک گروه فراهم می گردد . درکنترل فوق برخلاف radio button ، امکان اعمال محدوديـت برای انتخاب صرفا" يک گزينه وجود نخواهد داشت . پس از انتخاب يک checkbox توسط کاربر، امکان غيرفعال نمودن آن نيز وجود خواهد داشت . فرمت تعريف يک کنترل <asp:checkbox > به صورت زير است :

<asp:checkbox   id="check1"  runat="server" >


در صورتی که قصد داريم آرايه ای از Checkbox را داشته باشيم ، می توان آنان را درون يک کنترل <asp:checkboxlist> ، قرار داد. در چنين مواردی می بايست خصلت id برای کنترل <asp:checkboxlist> ،بدرستی مقدار دهی شده و برای هر يک از گزينه های درون کنترل ، از يک کنترل <asp:listitem>، استفاده شود.

<asp:checkboxlist id="check1" runat="server" >
   <asp:listitem  id="option1" runat="server" value="تهران" />
   <asp:listitem  id="option2" runat="server" value="اهواز" />
   <asp:listitem i d="option3" runat="server" value="شيراز" />
</asp:checkboxlist>


مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

<<script runat="server" language="vb">
Sub Page_Load()
Dim msg As String
if Page.IsPostBack then
  msg = "شما شهرستان های زير را برای مسافرت انتخاب نموده ايد:<br />"
  If check1.Items(0).Selected Then msg = msg & check1.Items(0).Text & "<br />"
  If check1.Items(1).Selected Then msg = msg & check1.Items(1).Text & "<br />"
  If check1.Items(2).Selected Then msg = msg & check1.Items(2).Text & "<br />"
End If
Message.Text = msg
End Sub
</script>
<html dir=rtl>
<head>
<title>Check Box Example</title>
</head>
<body>
<asp:label id="Message" runat="server" />
<br /><br />
کدام شهرستان رابرای مسافرت انتخاب می نمائيد ؟
<br /><br />
<form runat="server">
<asp:checkboxlist id="check1" runat="server">
<asp:listitem id="option1" runat="server" value="تهران" />
<asp:listitem id="option2" runat="server" value="اهواز" />
<asp:listitem id="option3" runat="server" value="شيراز" />
</asp:checkboxlist>
<br /><br />
<input type="Submit" Value ="ارسالدرخواست">
</form>
</body>
</html>