بررسی فرآيند PostBack New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 سه شنبه  5  ارديبهشت  1396  2017  Apr.  25   Tuesday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

 برنامه نوِِيسی مبتنی بر رويداد در وب ( بخش سوم )

 مديريت وب

11919

12

3.2

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

 

ذخيره سازی اطلاعات در VB.NET ( بخش سوم )

برنامه نوِِيسی مبتنی بر رويداد در وب ( بخش سوم )

 آنچه تاکنون گفته شده است :

  • بخش اول :  آشنائی با مدل برنامه نويسی مبتنی بر رويداد
  • بخش دوم : بررسی  رويداد های کنترل های سرويس دهنده

در بخش سوم اين مقاله به بررسی فرآيند PostBack خواهيم پرداخت .
Postback ، فرآيندی است که در آن مرورگر اطلاعاتی را برای سرويس دهنده  و به منظور برخورد با رويداد ، ارسال می نمايد. سرويس دهنده ، رويداد مربوطه را پردازش و نتايج را با فرمت Html مجددا" برای مرورگر ارسال می نمايد . Postback صرفا" بهمراه فرم های وب محقق شده و تنها کنترل سرويس دهنده می باشد که باعث ارسال اطلاعات به سرويس دهنده می گردد .
ASP.NET ، مسئوليت برخورد با تمامی رويدادها را برعهده نخواهد گرفت ( نظير رويداد OnmouseOver ) و ما همچنان نيازمند برخورد  با برخی رويدادها در سمت سرويس گيرنده ، می باشيم . مهمترين مزيت پردازش برخی رويدادها بر روی سرويس دهنده ، عدم وابستگی برنامه نوشته شده به يک مرورگر خاص به منظور تشخيص اسکريپت های سمت سرويس گيرنده ، می باشد . در اين رابطه می توان اطلاعات اضافه ای را  به منظور کمک در جهت اتخاذ تصميم صحيح و پردازش رويداد مربوطه ، ارسال نمود . ( مثلا" وضعيت يک کنترل خاص ) . اين موضوع با آن چيزی که در Html اتفاق می افتد دارای تفاوت اساسی است .
به منظور آشنائی با مفهوم Postback ، به بررسی يک نمونه مثال و پياده سازی آن با دو روش متفاوت ، خواهيم پرداخت .

مثال : در اين مثال قصد داريم با ايجاد يک فرم و استفاده از Radio button نشان دهيم که پس از انتخاب يک آيتم توسط کاربر و تحقق يک رويداد خاص ، وضعيت اطلاعات درج شده و يا انتخابی توسط کاربر پس از پاسخگوئی به رويداد به چه سرنوشتی دچار می شوند .

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

<html dir=rtl>
<head>
<title>تست رويدادها</title>
</head>
<body>
<form method="get">
  يکی از گزينه های زير را انتخاب نمائيد: <br/><br/>
   A<input type="radio" value="a" name="test"><br />
   B<input type="radio" value="b" name="test"><br />
   C<input type="radio" value="c" name="test"><br /><br />
   <input type="submit" value="تست رويدادها" onclick="alert('شما يک رويداد را ايجاد کرده ايد')">
</form>
</body>
</html>

مرحله دوم :  پس از ذخيره نمودن کد فوق در فايلی با نام WithoutPostback.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت : 


مرحله سوم : در صورتی که بر روی دکمه " تست رويدادها " ، کليک گردد ، يک جعبه محاوره ای نمايش و به شما اعلام می گردد که يک "رويداد" ، ايجاد شده است .

پس از نمايش جعبه محاوره ای و کليک بر روی دکمه Ok ، وضعيت فرم ، به صورت زير نمايش داده می شود( آيتم انتخاب شده در مرحله قبل ، ناپديد شده است ! )

توضيحات :
در مثال فوق همه چيز روال طبيعی خود را داشته و تمامی عمليات در فرم Html بدرستی انجام شده اند . در فرم ايجاد شده ، مقداری به خصلت action نسبت داده نشده است . بدين ترتيب اطلاعات موجود بر روی فرم مجددا" برای خود فرم ، ارسال می گردند.

<form method="get">
  يکی از گزينه های زير را انتخاب نمائيد: <br/><br/>
   A<input type="radio" value="a" name="test"><br />
   B<input type="radio" value="b" name="test"><br />
   C<input type="radio" value="c" name="test"><br /><br />
   <input type="submit" value="تست رويدادها" onclick="alert('شما يک رويداد را ايجاد کرده ايد')">
</form>

دربخش آدرس مرورگر ، يک querystring به اطلاعات ارسالی ، اضافه شده است .

http://localhost/WithoutPostback.aspx?test=c

پس از مراجعه مجدد به صفحه ، گزينه انتخاب شده ( آيتم C ) توسط کاربر ، ناپديد شده است . اين موضوع رفتاری کاملا" طبيعی در Html است. با استفاده از فرآيند Postback در ASP.NET وضعيت فوق بهبود پيدا نموده است . مثال فوق را با لحاظ نمودن پتانسيل Postback مجددا" بررسی می نمائيم .

 روش دوم : استفاده از پتانسيل Postback

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

<html dir=rtl>
<head>
<title>تست رويدادها</title>
</head>
<body>
<form runat="server" >
يکی از گزينه های زير را انتخاب نمائيد:
<br/>
<br/>
<asp:radiobuttonlist id="test" runat="server">
<asp:listitem id="option1" value="a" runat="server" />
<asp:listitem id="option2" value="b" runat="server" />
<asp:listitem id="option3" value="c" runat="server" />
</asp:radiobuttonlist>
<input type="submit" value="تست رويدادها" onclick="alert('شما يک رويداد را ايجاد کرده ايد')">
</form>
</body>
</html>

مرحله دوم :  پس از ذخيره نمودن کد فوق در فايلی با نام WithPostback.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت : 


مرحله سوم : در صورتی که بر روی دکمه " تست رويدادها " ، کليک گردد ، يک جعبه محاوره ای نمايش و به شما اعلام می گردد که يک "رويداد" ، ايجاد شده است .
پس از نمايش جعبه محاوره ای و کليک بر روی دکمه Ok ، وضعيت فرم ، به صورت زير نمايش داده می شود( ( آيتم انتخاب شده در مرحله قبل ، همچنان وجود دارد  )

توضيحات :
مثال فوق ، سعی در ارائه مفاهيم اوليه Postback را دارد . در صورتی که گزينه View Source را از طريق مرورگر انتخاب نمائيم ، کد زير را مشاهده خواهيم کرد :

<<html dir=rtl>
<head>
<title>تست رويدادها</title>
</head>
<body>
<form name="_ctl0" method="post" action="WithPostback.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
         value="dDw0MDk5MTgxNTU7Oz67D+jS4H0ka2qKu5M2tChjnIJijg==" />

يکی از گزينه های زير را انتخاب نمائيد:
<br/>
<br/>
<table id="test" border="0">
   <tr>
     <td>
           <input id="test_0" type="radio" name="test" value="a" checked="checked" />
           <label for="test_0">a</label>
     </td>
   </tr>
   <tr>
      <td>
            <input id="test_1" type="radio" name="test" value="b" />
            <label for="test_1">b</label></td></tr>
    <tr>
       <td>
            <input id="test_2" type="radio" name="test" value="c" />
             <label for="test_2">c</label>
       </td>
    </tr>
</table>
<input type="submit" value="تست رويدادها" onclick="alert('شما يک رويداد را ايجاد کرده ايد')">
</form>
</body>
</html>

کنترل <asp:radiobuttonlist> ، به کنترل <input> ، تبديل و به عنوان بخشی از يک جدول فرمت شده در نظر گرفته شده است . مهمترين تغيير، افزودن کنترل محفی VIEWSTATE می باشد :

<input type="hidden" name="__VIEWSTATE"
             value="dDw0MDk5MTgxNTU7Oz67D+jS4H0ka2qKu5M2tChjnIJijg==" />

اطلاعات مرتبط با وضعيت فرم از طريق يک کنترل محفی برای سرويس گيرنده،ارسال شده است.(با نام VIEWSTATE_ ). اطلاعات فوق توسط ASP.NET ايجاد شده است.اطلاعات موجود در کنترل VIEWSTATE  ( مقدار نسبت داده شده به خصلت Value )،يک نسخه رمز شده از وضعيت قديمی فرم می باشد . ASP.NET ، قادر به جستجو نسخه قديمی و مقايسه آن با نسخه جاری است . بدين ترتيب ASP.NET قادر به نگهداری وضعيت کنترل های سرويس دهنده در زمان ارسال متعدد صفحات است . در صورتی که تفاوتی وجود داشته باشد ( نظير انتخاب يک Radion button ديگر ) در ادامه يک رويداد داخلی توسط ASP.NET ايجاد تا نسخه جاری فرم را توليد نمايد. کنترل VIEWSTATE  يکی از امکانات مهم در ASP.NET بوده که امکان بخاطر سپردن وضعيت کنترل ها بين ارسال متعدد صفحات را فراهم می نمايد.ASP.NET از اطلاعات postback به منظور بررسی وضعيت يک صفحه استفاده و بر اساس آن يک نسخه جديد از صفحه را ايجاد نمايد. بدين ترتيب وضعيت کنترل های موجود بر روی يک فرم بخاطر سپرده شده و مرورگر از آنان به منظور برحورد مناسب با صفحه ، استفاده می نمايد .

خصلت   IsPostBack
فرض کنيد بخواهيم از وضعيت يک فرم باخبر شويم : آيا فرم اولين مرتبه است که ارسال و نمايش داده می شود و يا قبلا" فرم ارسال و  پس از بروز يک رويداد خاص بر روی سرويس گيرنده برای سرويس دهنده ارسال و پس از انجام پردازش های لازم ، مجددا" برای سرويس گيرنده ارسال شده است ؟ بديهی است که در چنين حالتی آخرين وضعيت کنترل های موجود بر روی يک فرم حائز اهميت بوده و در صورت نمايش مجدد فرم ، می بايست فرم مورد نظر با لحاظ نمودن وضعيت اطلاعاتی مرحله قبل خود نمايش داده شود. برای تشخيص اين موضوع می توان از خصلت IsPostback مربوط به شی Page استفاده نمود . در صورتی که قبلا" فرم ارسال شده باشد ، خصلت IsPostback مقدار True و در غير اينصورت مقدار False را دارا خواهد بود . خصلت IsPostBack  يک مقدار منطقی ( False , True ) را در خود نگهداری نموده و نشاندهنده اين موضوع است که آيا صفحه در پاسخ به يک رويداد Postback بر روی سرويس گيرنده ايجاد شده است يا خير؟
کنترل های خاصی نظير Button و Image button باعث ايجاد يک رويداد Postback اتوماتيک بر روی سرويس دهنده می گردند. بررسی مقدار موجود در خصلت IsPostBack در زمان استقرار يک صفحه در حافظه ( Loading ) به منظور پيشگيری از انجام عمليات زائد و پردازش عمليات لازم همزمان با اولين استقرار صفحه در حافظه ، ضروری است. در صورتی که مقدار IsPostBack برابر با Fasle باشد ، نشاندهنده اين موضوع است که صفحه اولين مرتبه است که در حافظه مستقر می گردد . خصلت فوق در دات نت  به صورت زير تعريف شده است :

Public Readonly Property IsPostBack  As Boolean

نحوه استفاده ازخصلت  IsPostback : در صورتی که اطلاعات Postback در ارتباط با يک رويداد ايجاد شده باشد ، مقدار IsPostback  مقدار True و در غيراينصورت مقدار Fasle  را دارا خواهد بود .

<script runat="server" language="vb"
     Sub Page_Load ( )
       If   Page.IsPostBack   Then
     
       عمليات مورد نظر 
       Else
     
      عمليات مورد نظر
     End If
   End Sub
</script>

خلاصه

  • برنامه نويسی در VB.NET مبتنی بر رويداد ها  و اشياء است :
    - در برخی موارد ASP.NET باعث ايجاد يک رويداد می گردد ( نظير : Page_Load و يا Page_Init ) .
    - استفاده کننده صفحه باعث ايجاد يک رويداد و فعال شدن روتين مرتبط با آن می گردد .

  • کدهای نوشته شده در ASP.NET که با استفاده از زبانهای مورد حمايت دات نت نظير VB.NET نوشته می شوند در برنامه های فرعی و توابع سازماندهی می شوند .

  •  پس از تحقق يک رويداد ، کد مرتبط با آن ( روتين پاسخگو ) ، اجراء می گردد .برنامه نويسان می بايست اقدام به پياده سازی روتين های مرتبط با هر يک از رويدادهای تعريف شده در برنامه خود نمايند .

  •  ASP.NET مجموعه ای از رويدادها را توليد می نمايد : مقداردهی اوليه يک صفحه ، استقرار صفحه در حافظه  و يا برداشتن صفحه از حافظه . در زمان پردازش هر يک از رويدادهای فوق ، ASP.NET قادر به انجام واکنش مناسب به ساير رويدادهائی است که ممکن است توسط کنترل های سرويس دهنده ، ايجاد شده باشند . کد مورد نياز به منظور انجام واکنش لازم ، متناسب با رويداد ايجاد شده در برنامه های جانبی با نام Event handler  مستقر می گردد . با ارسال دو پارامتر عمومی به اين روتين ها ، امکان استفاده از تمامی داده های فرم ، فراهم می گردد .

  • مدل برنامه نويسی مبتنی بر رويداد در ASP.NET تحولات مهمی را در خصوص ايجاد  صفحات و  فرم های وب بدنبال داشته است . يک فرم وب ممکن است دارای چندين بخش کد نوشته شده باشد که برخی از آنان ممکن است هرگز اجراء نشده و برخی ديگر بطور مداوم  اجراء گردند . پس از ايجاد فرم های وب ( بخش ويژوال ) ،  بررسی رويدادها و  نحوه برخورد با آنان از مهمترين اقداماتی است که می بايست توسط طراحان و پياده کنندگان برنامه های وب ، دنبال شود .



جستجو

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


 

 

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



              

 

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