برنامه نویسی ASP.NET با دلفی قسمت هشتم
فصل هشتم
معرفی کنترل های HTML و تگ های HTML در برنامه های ASP.NET
در این فصل از دید یک برنامه نویس دلفی نگاهی به کاربرد استاندارد تگها و اجزاء کنترل های HTML سمت سرور خواهیم انداخت .
همچنانکه قبلا ً گفته شد ASP.NET در طول تولید برنامه های خود دو نوع کنترل را در اختیار شما قرار می دهد . در کنار کنترل های سمت سرور ( وب یا HTML) ، هر صفحه ASP.NET معمولاً شامل HTML خالص یا اجزاء HTML مانند جداول، لیست ها، تصاویر و غیره می باشد. این مقاله اقدام به بررسی اجزاء HTML به روش کنترل سمت سرور می کند . البته اگر اطلاعات شما راجع به HTML اندک است باید به مطالعه بیشتر بپردازید.
تگها ، المانها ، صفت های HTML خالص :
اجزاء یا المانهای HTML قسمتهای ساختاری یک وب فرم هستند که توسط تگ های وب و صفت های هر تگ تعریف می شوند. به طور عادی اجزاء کلاسیک HTML داخل یک وب فرم ASP.NET به عنوان متن نوشتاری تلقی شده و از طریق برنامه نویسی توسط طراحان صفحه قابل دسترسی نبوده و این اجزاء در سمت کاربر اجرایی می شوند و مرورگر کاربر از آنها برای تولید صفحه استفاده می کند. برای مثال داشتن یک ابر پیوند یا hyperlink با نوشتن تک <a> و صفت "......"=href ایجاد می شود. مثال دیگر : input type=button > > سبب می شود که یک دکمه روی فرم ایجاد گردد. برای اینکه بتوان از طریق برنامه نویسی یک جزء HTML را از طریق کلاس کد پنهان تغییر دهید باید صفت " runat="server" " آن قسمتی که مایل هستید را فعال نمایید. اجزاء HTML که علامت "سمت سرور " داشته باشند را به نام کنترل های HTML می خوانند کنترل های HTML هم رفتاری شبیه اجزاء HTML دارند و تفاوتی با آنچه قبلاً انجام می داده اند نمی کنند .
کنترل های HTML :
برای دستیابی از طریق برنامه به اجزاء HTML می توانید مشخص کنید که یک جزء HTML به صورت کنترل سرور تولید و توزیع شود این کار از طریق افزودن صفت "server"=runat صورت می گیرد . . صفت لازم دیگر نیز ID بوده که دستگیره ای برای استفاده از طریق برنامه نویسی ایجاد می کند . فرم های ASP.NET همیشه با کنترل های فرم HTML شروع می شوند . کنترل های HTML form درست مانند HTML های معادل خود هستند و تنها صفت runat = server" را دارند . سایر کنترل های سرور نیز برای تشخیص داده شدن توسط ASP.NET باید بین تک های شروع و پایانی قرار داده شوند .
برای ایجادکنترل HTML باید دو قدم مشخص برداشته شود
اول باید آن جزء را به صفحه خود اضافه کنیم. این کار با کشیدن و رها کردن یا کلیک مضاعف روی جزء مورد نظر صورت می گیرد.
در قدم دوم باید صفت runat=”server” را به شکل دستی به جزء HTML اضافه کنید و آنرا تبدیل به یک HTML سمت سرور نمایید.
در ادامه باید یک دستگیره یا ID نیز اضافه نمایید.
توجه کنید:
در محیط طراحی گرافیک دو نوع جایگزینی برای اجزء وجود دارد که یکی مختصات جاری و دیگری مختصات مطلق می باشد .
افزودن کنترل های HTML به صفحه وب:
بیایید یک نمونه عملی را اجرا کنیم. وقتی در محیط طراحی قرار دارید روی شی HTML Anchor در سر برگ HTML Controls” " کلیک کرده و آنرا بکشید و در میانه صفحه رها کنید. بعد صفحه کد aspx را باز کنید و کد <a> اضافه شده را پیدا کنید که به شکل ذیل است:
حال دو صفت runat و ID را اضافه کنید تا شبیه خط زیر باشد :
با کمال تأسف کار شما تمام نشده است و باید کدهای وب فرم هم حاوی دستوراتی برای شناسایی شی تعریف شده در کلاس کد پنهان باشد. نکته دیگر اینکه این کار هم باید به طور دستی صورت گیرد. برای این کار صفحه code را فعال نموده و قسمت مربوط به
strict-private را پیدا کنید و یک پیوند مانند زیر اضافه کنید .
htmlLink: System.Web.UI.HtmlControls.HtmlAnchor;
به این ترتیب شما می توانید به خصوصیات و صفت های Anchor در مجموعه دستورات و کدهای برنامه خود دستیابی داشته باشید.
شاید اندکی به نظر پیچیده بیاید ولی قبل از آنکه تصمیم به فرار بگیرید باید بدانید که لازم است در هر صفحه ای از برنامه وب خود از این روش استفاده کنید و نمیتوانید از آن اجتناب کنید.
توجه کنید که افزودن یک جزء HTML به فرم هیچ حرکتی را سبب نخواهد شد و تنها سبب افزوده شدن مقداری کد سمت کاربر به فرم شده است. حال با در نظر گرفتن همین نکته می توانیم بگوییم برای افزودن یک کنترل HTML به صفحه می توانید تنها آن را در صفحه aspx خود اضافه کنید .
کنترل های HTML و شرایط render شدن آنها:
اگر به کنترل های HTML موجود در گروه آنها در پالت ابزار نگاهی بیندازید می بینید تعداد آنها زیاد است. لیست پی آمد ارتباط هر کدام را با اجزاء HTML استاندارد توضیح می دهد.
HTML Control |
HTML representation |
Declare as / Description | |||||||||||||||
HTML Label |
|
HtmlGenericControl | |||||||||||||||
HTML Button |
|
HtmlButton | |||||||||||||||
HTML TextBox |
|
HtmlInputText | |||||||||||||||
HTML TextArea |
|
HtmlTextArea | |||||||||||||||
HTML Password |
|
HtmlInputText | |||||||||||||||
HTML Submit Button |
|
HtmlInputButton | |||||||||||||||
HTML Reset Button |
|
HtmlInputButton | |||||||||||||||
HTML Image Button |
|
HtmlInputImage | |||||||||||||||
HTML CheckBox |
|
HtmlInputCheckBox | |||||||||||||||
HTML Radio Button |
|
HtmlInputRadioButton | |||||||||||||||
HTML DropDown |
|
HtmlSelect | |||||||||||||||
HTML ListBox |
|
HtmlSelect | |||||||||||||||
HTML Hidden Field |
|
HtmlInputHidden | |||||||||||||||
HTML File Upload |
|
HtmlInputFile | |||||||||||||||
HTML Anchor |
HtmlAnchor | ||||||||||||||||
HTML Image |
|
HtmlImage | |||||||||||||||
HTML Table |
HtmlTable HTML Span HtmlGenericControl HTML Div HtmlGenericControl HTML Flow Panel HtmlGenericControl HTML Grid Panel HtmlGenericControl HTML Horizontal Rule HtmlGenericControl توجه : بسیاری از کنترل ها اشاره ای به کنترل خاصی مانند دکمه ، ابر پیوند و یا TextBox ندارند. به عبارت دیگر این کنترل ها جلوه بصری ندارند. نمونه هایی از این دسته را می توانdiv> > ،span> < ، <font < و غیره، نام برد . توجه: شما نمی توانید یک سلول جدول از پالت ابزار به فرم اضافه کنید تا بعداً بتوانید تگ < td > را در سمت سرور فعال کنید. زمانیکه یک جدول نمونه شامل 3 سطر و 3 ستون ایجاد می شود اگر از طریق برنامه می خواهید به یک سلول دسترسی داشته باشید می توانید صفت های runat و ID را به سلول مناسب خود اضافه کنید فراموش نکنید که باید یک اشاره یا عطف نیز در کد های خود به این شی به وجود آورید . همین داستان برای تگ های خود چه اشکالی رخ خواهد داد ؟ بله ، مشکل اینجاست که خطاهای چندی در همین روال برنامه نویسی ساده بوجود خواهد آمد. در اینجا خطاهای متعارفی که ممکن است رخ دهد را ذکر کرده ایم. این در حالتی است که شما 3 مرحله مربوط به فعال کردن کد HTML در سمت سرور را درست اجرا نکرده باشید. در نمونه های ذیل فرض ما بر آنست که با همان کنترل Anchor کار کرده و به تصور ما همه چیز درست است اما: System.NullReferenceException : اشاره یا عطف مناسب برای شی تعریف نشده است . دلیل احتمالی 1 : فراموش کرده اید که runat=server را به برنامه اضافه کنید . دلیل احتمالی2 : فراموش کرده اید که دستگیره یا ID مناسب را به جزء HTML اضافه کنید . پیام خطای پارسر : شناسه ID برای HtmlLink قبلاً برای کنترل دیگری تعریف شده است . دلیل احتمالی خطا: در برنامه بیش از یک دستگیره یا ID به نام HtmlLink تعریف کرده اید . پیام خطای پارسر : کلاس پایه شامل فیلد 'htmlLink' بوده اما نوع آن (System.Web.UI.HtmlControls.HtmlButton) با نوع کنترل سازگار نیست دلیل احتمالی : شما کنترل anchor را در کلاس کد پنهان بطور صحیح تعریف نکرده اید و در آنجا به عنوان دکمه شناخته شده است . کنترل های HTML : خواص ، متدها و صفتها اینکه شما تعدادی کنترل HTML روی صفحه بگذارید نمی تواند نیازها و صفت های مورد نظر شما را تأمین کند مثلاً رویدادها به ServerChange یا ServerClick محدود شده اند که بستگی به نوع کنترل دارند . اما کنترل هایی که در دسترس قرار گرفته باشند صفات بسیار کار آمدی پیدا می کنند. برای نمونه می توان از تغییر دینامیک عنوان صفحه نام برد. همه کنترل های HTML از کلاس HTMLControl مشتق می شوند این کلاس شامل صفات عمومی بوده که توسط همه کلاسهای کنترل سرور بکار می رود برای مثال شما میتوانید با استفاده از صفت TagName به نام جزء تگ مورد نظر خود دسترسی پیدا کنید. با استفاده از کنترل های مرتبط با HTMLGenericControl مانند: <div > و <title> شما می توانید از خاصیت TagName استفاده کرده و بین کنترل های مختلف کار کنید . یک خاصیت دیگر visible بوده که مقداری منطقی را ارجاء داده و از مرئی بودن کنترل خبر می دهد . اگر مقدار آن False باشد کنترل رندر نمی شود و اگر True باشد در مرورگر نمایش داده می شود . چرا و چه وقت از کنترل های HTML استفاده می کنیم؟ همچنانکه مشاهده کردید کنترل های HTML روش نسبتاً سریع و آسانی را برای تبدیل وب سایتهای معمولی HTML به سایتهای ASP.NET به دست می دهد . تنها باید چند کار جزئی صورت داده شود . تا در نتیجه اشیاء به مدل های سمت سرور تبدیل شوند . اما لازم است بدانید که کنترل های HTML تنها یک قسمت از داستان وب فرم می باشد . در فصل بعدی خواهید دید که کنترل های وب همه خصوصیات و عملکردها ی کنترل های HTML را به همراه بسیاری خواص دیگر ارائه می کند . البته این نکته را هم در ذهن داشته باشید که اگر بخواهید محتوای HTML خاصی را تولید کرده و به مرورگر کاربر ارسال کنید استفاده از کنترل های HTML نسبت به کنترلهای وب فرمانبری و قابلیت اعتماد بیشتری دارند. زیرا خصوصیات کنترل های وب بسته به نوع مرورگر (کامپیوتر ، موبایل ، یا کامپیوتر جیبی ) تغییر می کنند . |