پاسخ به برخی از پرسش های متداول در رابطه با انواع مدل كدينگ در ASP.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 دوشنبه  8  خرداد  1396  2017  May  29   Monday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 انواع مدل كدينگ در ASP. NET 2.0 ( بخش سوم )

 مديريت وب

8334

5

4.8

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

مدل كدينگ در ASP. NET 2.0 

انواع مدل كدينگ در ASP. NET 2.0 ( بخش سوم )
در بخش اول پس از بيان برخی مفاهيم اساسی برنامه های وب به انواع مدل كدينگ در ASP.NET 2.0 و در بخش دوم به روش های ترجمه  و مفهوم page class در ASP.NET 2.0 اشاره گرديد. در بخش سوم و نهائی برخی از پرسش های متداول در رابطه با انواع مدل كدينگ در ASP.NET را بررسی و سعی خواهيم كرد كه برای آنها پاسخی مناسب ارائه دهيم . 
برای بسياری از علاقه مندان و پياده كنندگان برنامه های وب ASP. NET پرسش های متعددی در رابطه با ماهيت مدل كدينگ در ASP. NET مطرح می شود . اهم اين پرسش ها عبارتند از :

  • چگونه فايل های code-behind به صفحات مرتبط می شوند ؟
  • چگونه تگ های كنترل به متغيرهای صفحه تبديل می شوند ؟
  • چگونه رويدادها به Event Handler  مرتبط می شوند ؟

چگونه فايل های code-behind به صفحات مرتبط می شوند ؟
هر صفحه aspx . با يك دايركتيو صفحه شروع می شود . دايركتيو فوق علاوه بر اين كه زبان برنامه نويسی استفاده شده برای كدينگ صفحه را مشخص می نمايد ، به ASP. NET اعلام می نمايد كه از چه مكانی كد مرتبط با صفحه را پيدا نمايد . با توجه به اين كه در زمان استفاده از روش  inline code ، كد به همراه تگ های html و تگ های مختص كنترل های ASP. NET در يك فايل مشابه قرار می گيرد ، دايركتيو اشاره شده سخن خاصی در خصوص مكان كد مرتبط با صفحه را نخواهد داشت .
برای مشخص كردن مكان كد مرتبط با صفحه از چندين روش مختلف می توان استفاده كرد . در نسخه های قبلی ASP. NET ، از خصلت src  كه به فايل كد منبع اشاره می نمايد و يا خصلت Inherits برای مشخص كردن نام كلاس ترجمه شده استفاده می گرديد . هر يك از روش های فوق دارای چالش های مختص به خود می باشند . به عنوان نمونه ، در مواردی كه از خصلت Inherits استفاده می گرديد ، پياده كنندگان مجبور به ترجمه كامل كد قبل از بكارگيری نهائی آن می باشند . اين موضوع باعث بروز مشكلات عديده ای برای پياده كنندگان می گرديد ( خصوصا" در گروه های پياده كننده ، چراكه گزينه استاندارد ، ترجمه هر صفحه در يك اسمبلی DLL است ) . مشكل واقعی‌ هر دو روش فوق ، الزام پياده كنندگان به تعريف هر يك از كنترل های وب مورد نياز به عنوان يك member variable است .
در ASP. NET 2.0 ، با استفاده از يك ويژگی جديد با نام partial class  اين نوع مشكلات برطرف شده است . ويژگی فوق به پياده كنندگان اجازه می دهد يك كلاس را به چندين فايل كد منبع تقسيم نمايند . در واقع ، عملكرد روش فوق مشابه مدل های قبلی است با اين تفاوت كه تعاريف كنترل ها به سمت يك فايل جداگانه هدايت شده است . پياده كنندگان لازم نيست نگران اين فايل باشند و برای دستيابی به كنترل های صفحه وب می توان از اسامی آنها استفاده كرد .
قطعا" تاكنون واژه partial را در تعريف كلاس برای كد صفحه وب مشاهده كرده ايد .

 Partial Class TestCodeBehind
  
Inherits System.Web.UI.Page
       ...
 End
Class

با تغيير اندك در زيرساخت ASP. NET  ، به سادگی يك صفحه aspx . با فايل كد منبع توسط خصلت CodeFile مرتبط می گردد . 

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="TestCodeBehind.aspx.vb" Inherits="TestCodeBehind" %>

چگونه تگ های كنترل به متغيرهای صفحه مرتبط می گردند ؟
پس از درخواست يك صفحه aspx . در يك مرورگر ، ASP. NET در آغاز سعی می نمايد كه كد فايل مرتبط با صفحه درخواستی را پيدا نمايد . در ادامه برای هر كنترلی كه دارای خصلت runat= server  است يك تعريف متغير را توليد می نمايد .
فرض كنيد كه در صفحه  aspx .  دارای يك كنترل text box به صورت زير باشيم :

<asp:TextBox ID="txtInput" runat="server"/>

ASP. NET ، در ادامه تعريف  member variable زير را توليد و آن را با استفاده از  كلاس های partial  به page class ملحق می نمايد  .
 

Protected System.Web.UI.TextBox txtInput

برای حصول اطمينان از اين موضوع كه سيستم به درستی كار می كند ، می بايست فايل aspx . و فايل vb.  همسان گردند . در صورتی كه اسامی كنترل ها را با استفاده از ابزاری نظير يك ويرايشگر متن تغيير داده باشيم ، لينك مورد نظر از بين رفته  و كد مورد نظر كمپايل نخواهد شد .
توجه داشته باشيد كه متغيرهای كنترل همواره با كليد واژه قابليت دستيابی پذيری protected تعريف می گردند . علت اين موضوع به روش توارث استفاده شده در  ASP.NET  ( مدل كدينگ صفحه ) برمی گردد .
روش انجام اين كار به صورت زير است : 

  • در ابتدا ، page class  از كتابخانه كلاس دات نت قابليت های اوليه را تعريف و به يك صفحه وب اجازه می دهد ساير كنترل ها را هاست نمايد و خود را به Html تفسير و امكان دستيابی به اشياء سنتی ASP نظير Request ، Response و Session را فراهم نمايد .

  •  كلاس code-behind از كلاس صفحه به ارث می رسد تا بتواند توانمندی های اوليه صفحه وب ASP. NET را فراهم نمايد .

  • در نهايت ،  صفحه aspx . از طريق كلاس صفحه سفارشی از كد  استفاده می نمايد . اين موضوع باعث می شود كه صفحه فوق بتواند رابط كاربر را با كدی كه آن را حمايت می نمايد ، تركيب نمايد . 

عملكرد متغيرهای protected مشابه متغيرهای private با يك  تفاوت اساسی است . اين نوع متغيرها قابل دستيابی برای كلاس های مشتق شده می باشند .به عبارت ديگر ، استفاده از متغيرهای protected در كلاس code-behind اين اطمينان را ايجاد می نمايد كه متغيرها در كلاس صفحه مشتق شده قابل دستيابی باشند . اين موضوع به ASP. NET اجازه می دهد كه متغيرهای كنترل را در زمان اجراء به تگ های كنترل مرتبط نمايد .

چگونه رويدادها به Event Handler  مرتبط می شوند ؟
اكثر كد نوشته شده در يك صفحه ASP. NET درون event handlers قرار می گيرند تا بتوانند به رويدادهای كنترل های وب واكنش نشان دهند . در ويژوال استوديو دات نت ،  با استفاده از سه روش زير  می توان يك event handler را اضافه كرد :

  •  تايپ دستی آن : در اين روش می توان متد مورد نظر را مستقيما" در كلاس صفحه اضافه كرد . در چنين مواردی لازم است كه پارامترهای ضروری دقيقا" مشخص گردند تا signature مربوط به event handler با signature رويداد مورد نظر مطابقت نمايد . همچنين لازم است كه تگ كنترل ويرايش گردد تا بتواند به event handler مربوطه به درستی مرتبط گردد .

  • Double-click بر روی يك كنترل در حالت Design view : در اين حالت ، ويژوال استوديو يك event handler برای رويداد پيش فرض كنترل را ايجاد می نمايد . به عنوان مثال در صورتی كه بر روی صفحه double-click گردد ،  event handler مربوط به Page_Load ايجاد می گردد . همچنين ، در صورتی كه بر روی يك كنترل button ، كليك (double-click) گردد، ويژوال استوديو   بطور اتوماتيك رويداد Click را برای آن ايجاد خواهد كرد .

  • انتخاب رويداد از طريق پنجره Properties : در اين روش پس از انتخاب  كنترل از طريق پنجره Properties می توان رويداد مورد نظر را انتخاب نمود.  در ادامه ، ليستی از رويدادهای ارائه شده توسط كنترل مورد نظر نمايش داده می شوند . با double-click بر روی رويداد مورد نظر می توان آن را انتخاب نمود . ويژوال استوديو بطور اتوماتيك event handler را در page class ايجاد و تگ كنترل را نيز بر اساس آن تنظيم می نمايد .

شكل 1 ، نحوه ارتباط رويداد Button.Click را با متد  Button_Click در يك page class نشان می دهد .

نحوه ارتباط رويداد Button.Click با متد  Button_Click
شكل 1 : نحوه ارتباط رويداد Button.Click با متد  Button_Click

 ويژوال استوديو دانت 2005 از يك ويژگی با نام  automatic event wire-up استفاده می نمايد( در دايركتيو صفحه مشخص می گردد).
اين ويژگی از دو اصل كلی زير تبعيت می نمايد :

  • تمامی event handlers صفحه بطور اتوماتيك و بر اساس نام event handler مرتبط می شوند . به عبارت ديگر ، متد page_Load بطور اتوماتيك و در زمان استقرار صفحه در حافظه صدا زده می شود . 

  • تمامی event handlers كنترل از طريق خصلت های مربوطه در تگ كنترل مرتبط می گردند . خصلت مورد نظر دارای نام مشابه رويداد است كه دارای پيشوند on است . 

به عنوان مثال ، در صورتی كه قصد برخورد با رويداد Click مربوط به كنترل Button را داشته باشيم ، می بايست خصلت OnClick در تگ كنترل را به نام event handler مورد نظر مقداردهی نمود . كد زير نحوه انجام اين كار را نشان م دهد : 

<asp:Button id="cmdOK" OnClick="cmdOK_Click" runat="server">

كنترل های ASP. NET همواره از گرامر فوق استفاده می نمايند . بخاطر داشته باشيد با توجه به اين كه ASP. NET می بايست به event handler مرتبط گردد ، كلاس صفحه مشتق شده می بايست قادر به دستيابی به كلاس code-behind باشد . اين بدان معنی است كه event handlers می بايست به همراه كليد واژه های Protected و يا Public تعريف شوند ( protected ترجيح داده می شود چراكه از مشاهده متد توسط ساير كلاس ها پيشگيری به عمل می آيد ) .



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382