فصل هفتم

وب فرم ها ، بلوکهای ساختاری یک برنامه کاربردی وب ASP.NET

معرفی خواص ، متد ها و رویداد های وب فرم

نگاهی گذرا به خاصیت IsPostback و پردازش پست بک


وب فرم یک شی است:

بله،  این حرف نباید برای شما تعجب آور باشد چرا که در دنیای Win32  همواره با اشیاء سر و کار داشته اید . همه وب فرمها در یک برنامه ASP.NET دلفی از کلاس System.Web.UI.Page مشتق شده اند . آنچنان که در فصلهای قبل گفته شده وب فرم وظیفه برقراری ارتباط بصری با برنامه را بر عهده دارد . هر وب فرم شامل ترکیبی از منطق برنامه نویسی و رابطه های کار بری بوده که به عنوان صفحه HTML توسط مرورگر خوانده می شود . لذا یک کلاس وب فرم (صفحه ) همیشه همراه یک فایل با پسوند aspx خواهد بود شباهت دیگری که وب فرم با فرم های دلفی دارد آنست که وب فرم هم دارای رویدادهایی بوده که بر اساس یک منطق و ترتیب خاص خود اجرا می شوند . اما یک اختلاف ، بزرگ هم وجود دارد و آن اینکه در برنامه های کلاسیک ویندوز همه رویدادها که توسط فعالیتهای مختلف اجرا می شوند روی سیستم کاربر و توسط توابع و جریانهای پردازش رویدادهای همان ماشین اجرا می شوند، در حالیکه در ASP.NET رویدادها توسط مرورگر کاربر دستور اجرا می گیرند اما به صورت کدهای سرور پردازش می شوند .

خصوصیات وب فرمها :

یکی از خصوصیات پر کاربرد در برنامه های ASP.NET خاصیت IsPostback می باشد .اگر به مثال فصل قبل مراجعه کنید خواهید دید که دستورات نوشته شده در قسمت رویداد بار گذاری صفحه مقدار خاصیت IsPostback را بررسی کرده تا اطمینان پیدا کند که یک بلوک خاص از کد فقط یکبار اجرا می شود . چیزی شبیه این :

 

  if not IsPostBack then

  // only first time

  begin

  ListBox1.Items.Add('http://delphi.about.com');

  ListBox1.Items.Add('http://aspxDelphi.net');

  ListBox1.Items.Add('http://www.mono-software.com');

  end;

صفت IsPostback : یک صفت فقط خواندنی و فقط زمان اجرا می باشد . از این صفت برای بررسی بار گذاری یک صفحه در پاسخ به در خواست پست یک کاربر استفاده می شود . (IsPostback=True ) و یا اینکه صفحه برای دفعه اول در حال بار گذاری و اجرا می باشد (IsPostback=False )

 

پست بک ها و طبیعت بدون حالت (stateless )  برنامه های وب :

راههای زیادی برای حفظ ظاهر فرم وب وجود دارد . خوشبختانه بسیاری از کارها در پشت صحنه صورت می گیرد. همه کنترل های وب و کنترل های HTML ( در فصل بعد بررسی می کنیم ) می توانند حالت ظاهری خود را ( شامل مقادیر مثل اطلاعات ListBox ) در طول سفر بین کاربر و سرور حفظ کنند و نیازی به هیچ کد نویسی ندارید . به این حالت  ViewState  (وضعیت یا حالت ظاهری ) گفته می شود.  پس از آنکه برنامه توسط مرور گر اجرا و نمایش داده شد از منو گزینه View و سپس source را انتخاب کرده، کد HTML خام را مشاهده کنید. می توانید فیلد پنهان ViewState  را نیز مشاهده کنید. این فیلد پنهان توسط ASP.NET بطور خودکار و برای همه صفحات ایجاد می شود . رشته مقداری کد گذاری شده ای که در آنجا هست حاوی وضعیت (مقادیر) همه کنترل های وب روی وب فرم می باشد . هنگامی که عمل پست بک اتفاق می افتد از مقادیر پنهان فیلد ViewState T برای تشریح حالت کنترل ها استفاده می شود . به این ترتیب اگر کاربر متغیری ( مثلاً مقادیر یک ListBox ) را تغییر داده باشد مقدار فیلد حالت با مقدار کنونی مقایسه شده و در نتیجه رویداد Change را اجرا می کند. البته توضیحات فوق بسیار با آنچه یک عمل پست بک وضعیت ظاهری (ViewState  ) و مدیریت حالت ( State) انجام می دهند فاصله دارد . اما برای ادامه دادن روال آموزش و شروع مباحث پیشرفته تر کافی هستند .

رویدادهای وب فرم : برای اینکه لیستی از رویدادهای وب فرم را مشاهده کنید DesignView را انتخاب کرده و داخل Object Inspector توسط منوی مربوطه آنها را پیدا کنید .

نکته : در Win32 همه رویدادها دارای پیشوند On می باشند اما در .Net پیشوند On وجود ندارد و رویدادها به شکل  Click ، Change  و مانند آن نوشته می شوند. رویداد OnClick یک متد اجرایی محافظت شده بود و مانند متد  DoChange در منابع VCL عمل می کندو ما در اینجا قصد توضیح آن را نداریم. فقط کافی است بدانید که: رویداد Click همان رویداد OnClick بوده و  این موضوع سبب سردرگمی شما  نشود.

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

1- Init : مقادیر اولیه صفحه توسط این رویداد تعیین می شود . توجه کنید که دلفی به طور خودکار یک متد OnInit به کدهای وب فرم اضافه می کند که به صورت overridden می باشد و در صورتی که شما بخواهید تغیری در کد Init بدهید نباید آنها را در متد OnInit دلفی وارد کنید . بلکه باید گزینه مورد نیاز خود را در فرم بازرسی اشیا پیدا و تغییرات خود را آنجا وارد کنید . ( درست مانند آنچه در برنامه ویندوز عمل می کنیم ) . همچنین شما نباید کنترل های سرور را که در لیست کنترل صفحه وجود دارند تغییر دهید . چون هنوز متغییرهای وضعیت ظاهری در این رویداد صادر نشده و نمی تواند تغییرات را پیگیری کند .

2- Load: از این رویداد معمولاً برای مقدار دهی اولیه کنترل ها ، متغیر ها و سایر اشیا استفاده می شود . در اینجا شما می توانید به راحتی به کنترل های صفحه دسترسی داشته باشید توجه کنید کد ساختار متد رویداد Load توسط دلفی به طور خود کار با افزودن هر صفحه جدید ایجاد می شود .

3- PreRender: این رویداد درست قبل از آنکه صفحه توسط مرور گر تفسیر یا Render شود اجرا می شود .

4- Disposed  وUnload: به عنوان آخرین رویدادها در طول دوره حیات صفحه اجرا می شو ند . توجه کنید که در فراخوانی ها و اجراهای دوم و غیره می تواند رویدادهای مختلف دیگری نیز اضافه و اجرا شوند.

 رویداد های دیگری هم هستند که شما می توانید برای یک صفحه وب استفاده کنید. اما از همه جالب تر Error و DetaBinding می باشد رویداد Error  زمانی اجرا می شود که یک استثنا کنترل نشده در فرم وب رخ می دهد .  شما می توانید از این رویداد برای هدایت کاربر به سوی صفحه خاصی که قادر به نمایش دادن خطا به شکل کاربر پسند هست استفاده کنید . البته باید بدانید که همه خطاهای داخل برنامه وب می توانید توسط فایل Web.Config مدیریت شود . بعداً این موضوع را بررسی خواهیم کرد .

رویدادها و " امضاء " آنها :

نگاهی به متد بار گذاری و تعریف رویداد بکنید :

procedure TWebForm1.TWebForm1_Load

  (sender: System.Object; e: System.EventArgs);

 بطور کل همه رویدادها در .Net دو پارامتر را ارائه یا پذیرش می کنند . پارامتر اول که sender نامیده می شود اشاره به شی  بوجود آورنده رویداد می کند . و پارامتر دوم ( به نام e ) که از نوع System.EventArgs می باشد نوعی پارامتر توسعه ای بوده که در این مرحله خاص حاوی هیچ اطلاعاتی نمی باشد .

متدها و خواص وب فرم :

کلاس System.Web.UI.Page متدها و خواص بسیار متعددی دارد که ما هم از بسیاری از آنها در فصول آینده استفاده می کنیم. بعضی از خواص دارای تگ های استاندارد HTML و صفت های آن مانند bgColor و title و class و غیره می باشد. شما می توانید با انتخاب سر برگ Document  بازرسی اشیاء خواص موجود را بررسی کنید .