آموزش کامپیوتر

آموزش گام به گام کامپیوتر

آموزش کامپیوتر

آموزش گام به گام کامپیوتر

حرکت بین فرم های وب

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

 

بقیه در ادامه مطلب.................

روش های حرکت بین صفحات  بمنظور حرکت بین صفحات در یک برنامه وب ، ASP.NET ، پنج روش متفاوت را ارائه نموده است :

  • کنترل hyperlink : با استفاده از کنترل فوق ، امکان حرکت از یک صفحه به صفحه دیگر ، فراهم می گردد.
  • متد Response.Redirect : با استفاده از متد  فوق، امکان حرکت از یک صفحه به صفحه دیگر ، فراهم می گردد . عملکرد متد فوق ، مشابه کلیک نمودن بر روی یک hyperlink است .

  • متد Server.Transfer :  با استفاده از متد فوق ، اولا" به اجرای فرم جاری ( فرمی که از طریق آن، فرم دیگر فراخوانده شده است )  خاتمه داده شده و ثانیا" اجرای یک فرم وب جدید ،آغاز می گردد. متد فوق ، صرفا" در مواردیکه  قصد حرکت به یک فرم وب دیگر وجود داشته باشد ( فایلی با انشعاب aspx . ) ، استفاده می گردد .

  • متد Server.Execute :با استفاده از متد فوق ، یک فرم وب دیگر اجراء و ماحصل آن در فرم وب صدازننده و در ناحیه ای مشخص شده ، نمایش داده می شود. بدین ترتیب، امکان ترکیب دو فرم وب با یکدیگر فراهم می گردد .متد فوق ، صرفا" در مواردیکه قصد حرکت به یک فرم وب دیگر وجود داشته باشد ( فایلی با انشعاب aspx . ) ، استفاده می گردد .

  • متد اسکریپت Window.Open . با استفاده از روش فوق ، صفحه مورد نظر در یک پنجره جدید مرورگر و بر روی ماشین سرویس گیرنده ، نمایش داده می شود.

در ادامه به بررسی هر یک از روش های فوق، خواهیم پرداخت .

کنترل سرویس دهنده  Hyperlinkساده ترین روش حرکت از یک فرم وب به فرم وب دیگر ، استفاده از یک  ابرلینک است . در این راستا می توان بر بر روی یک فرم وب ، از  دستوری مشابه زیر، استفاده نمود :

HyperLink

<a href="WebForm2.aspx">WebForm2</a>

زمانیکه کاربران برروی ابرلینک فوق ، کلیک می نمایند، فرم وب webform2.aspx در مرورگر آنان نمایش داده می شود. از روش فوق می توان در هر محل و صفحات مبتنی بر HTML  و ASP کلاسیک، استفاده نمود .با استفاده از ابرلینک ها ، امکان حرکت از یک صفحه به صفحه ای دیگر ، فراهم می گردد . تحقق عملیات فوق ، وابسته به واکنش کاربر و کلیک نمودن بر روی ابر لینک می باشد . بدیهی است در چنین مواردی امکان تصمیم گیری پویا در رابطه با صفحه مقصد و زمان حرکت  ، وجود نداشته و فرآیند حرکت از یک صفحه به صفحه ای دیگر با ماهیتی کاملا" استاتیک انجام خواهد شد .
در ASP.NET ، از رویکردی دیگر در این زمینه ، استفاده می گردد.کنترل سرویس دهنده وب hyperlink ، یکی از روش های ارائه شده در ASP.NET بمنظور حرکت بین صفحات می باشد.مهمترین ویژگی کنترل سرویس دهنده فوق در مقایسه با یک ابرلینک معمولی ، قابلیت برنامه نویسی آن از طریق سرویس دهنده می باشد.خصلت NavigateURL، مشخصات صفحه مقصد را نشان داده و می توان مقدار آن را از طریق کدهای نوشته شده و بصورت پویا تغییر داد .

HyperLink Server Control

<form id="Form1" method="post" runat="server">
   <asp:HyperLink id="HyperLink1" runat="server"     NavigateUrl="WebForm2.aspx">WebForm2</asp:HyperLink>
</form>

در صورتیکه مقصد یک hyperlink ،وابسته به شرایط و حالاتی خاص بر سرویس دهنده می باشد ، می توان مقدار NavigateUrl را بصورت پویا تغییر داد .

Change NavigateUrl Value  

Private Sub Button1_Click ( ByVal sender As System.Object,&_
   ByVal e As System.EventArgs) Handles Button1.Click
   HyperLink1.NavigateUrl = "WebForm3.aspx"
End Sub

پس از اجراء کد فوق ( کد فوق همزمان با کلیک نمودن بر روی دکمه Button1  در فرم وب ، اجراء می گردد ) ،  در صورتیکه کاربر بر روی لینک تعریف شده ( جدول قبل ) ، کلیک نماید ، در مقابل فعال شدن WebForm2.aspx ، فرم وب WebForm3.aspx اجراء خواهد شد.
کنترل سرویس دهنده hyperlink ، با توجه به مقدار خصلت NavigateURL  ، به رویدادهای محقق شده با توجه به عملیات ( کلیک ) کاربران ، پاسخ خواهد داد . این نوع کنترل ها ، توانائی پاسخگوئی به رویدادهای ایجادشده در سمت سرویس دهنده را دارا نمی باشد.در صورتیکه قصد تفسیر یک رویداد کلیک  را از طریق  کد مورد نظر داشته باشیم ، می توان از کنترل LinkButton و یا کنترل سرویس دهنده ImageButton استفاده نمود . بمنظور حرکت از طریق  یک LinkButton و یا ImageButton ، می توان از متد Response.Redirect استفاده نمود .

متد Redirect متد Redirect ، باعث  می گردد که مرورگر به یک URL مشخص شده ، متصل و آن را فعال نماید . پس از فراخوانی متد Redirect ، متد فوق پاسخ لازم بمنظور واکنش مناسب مرورگر را ایجاد می نماید. در header پاسخ ایجاد شده توسط متد فوق ، کد وضعیت 302 ( Object Moved ) و آدرس URL مقصد مشخص می گردد . پس از دریافت پاسخ فوق توسط مرورگر ، از اطلاعات موجود در header بمنظور واکنش لازم ، استفاده می گردد . مرورگر از اطلاعات موجود در header پاسخ ارسالی ، بمنظور ایجاد یک درخواست HTTP دیگر و مرتبط با URL جدید استفاده می نماید . در زمان استفاده از متد فوق ، لازم است به این نکته دقت شود که عملیات Redirection در سمت سرویس گیرنده انجام خواهد شد و این امر مستلزم دو Round trip ( ارسال درخواست از طرف سرویس گیرنده و پاسخ به درخواست توسط سرویس دهنده ) به سرویس دهنده خواهد بود . در اولین Round trip ، صفحه اولیه درخواست می گردد که در این رابطه پاسخ 302 ارائه شده و در دومین Round trip ، درخواست مربوط به صفحه مقصد ارسال می گردد . کد زیر نحوه استفاده از متد فوق در روتین مربوط به رویداد کلیک مرتبط با دکمه LinkButton1 را نشان می دهد . پس از کلیک نمودن بر روی دکمه فوق ، روتین مربوطه اجراء گردیده و از طریق آن صفحه ای با نام NewPage.aspx  فعال خواهد شد .

Response.Redirect

Private Sub LinkButton1_Click ( ByVal Sender As System.Object , &_
    ByVal  e  As  System.EventArgs ) Handles
LinkButton1.Click
        Response.Redircet ("NextPage.aspx")
End Sub

متد Transfer متد Transfer ، باعث انتقال فرآیند اجراء از فایل ASPX جاری به فایل ASPX دیگر می گردد( فایل های فوق ، می بایست بر روی یک سرویس دهنده وب باشند ). پس از فراخوانی متد فوق ، به اجرای صفحه جاری خاتمه داده شده و کنترل به یک صفحه ASPX دیگر ، منتقل می گردد .در زمانیکه از متد فوق بمنظور حرکت بین صفحات استفاده می گردد ، URL در مرورگر همچنان صفحه اولیه را نشان خواهد داد ، چراکه تغییر مسیر بر روی سرویس دهنده محقق شده و مرورگر از این انتقال آگاهی ، ندارد. عملکرد متد Transfer ، شباهت زیادی به اجرای یک hyperlink  و یا استفاده از متد Redirect دارد . در این رابطه صرفا" یک تفاوت اساسی وجود دارد: متد Transfer قادر به نگهداشت ( بخاطر سپردن ) اطلاعات صفحه مبداء در بین درخواست ها ، می باشد . با نسبت دهی مقدار True به  آرگومان PreserveForm مربوط به متد Transfer ، امکان استفاده از اطلاعات QueryString , viewstate  و روتین های مرتبط با هر یک از رویدادها  در فرم وب مقصد ، فراهم می گردد. در این رابطه می بایست در ابتدا به خصلت EnableViewStateMac  در بخش دایرکتیو صفحه فرم وب ، مقدار False نسبت داده شود. ASP.NET ، بصورت پیش فرض، اطلاعات ViewState را hash می نماید ، با تنظیم خصلت فوق به False ، اطلاعات hash نشده و سایر فرم های وب نیز قادر به دستیابی و استفاده از  اطلاعات خواهند بود. کد زیر ، نحوه غیر فعال نمودن hashing را نشان می دهد . پس از غیر فعال شدن hashing امکان استفاده از viewstate صفحه برای سایر صفحات ، فراهم می گردد.

Disable hashing

<% Page  language = "vb"  EnableViewStateMac = "false"  .... %>

کد زیر ( روتین پاسخگو در مقابل رویداد کلیک بر روی دکمه imgTransfer ) ، نحوه ارسال اطلاعات بین فرم ها  را با  استفاده از متد Transfer نشان می دهد :

Information Passed  between forms

'webform1.aspx
 Private Sub imgTransfer_Click(ByVal Sender As System.Object ,
&_
       ByVal e As System.Web.UI.ImageClickEventArgs ) Handles imgtransfer .Click
    Server.Transfer("Webform2.aspx" , True)
End Sub

با استفاده از متد Form مربوط به شی Request می توان اطلاعات ViewState را از فرم وب مبداء ، بازیابی نمود . کد زیر ، نحوه نمایش مقادیر کنترل TextBox و مختصات X,Y  را ازطریق رویداد کلیک  مربوط  به دکمه  ImageButton از Webform1.aspx در Webform2.aspx نشان می دهد .

Retrieve ViewState Information

'Private Sub Page_Load ( ByVal Sender As System.Object , Mybase.Load
    Dim colForm As System.Collection.Specilized.NameValueCollection
    colForm = Request.Form
    Response.Write ( "TextBox1.Text :  " colForm.Item("TextBox1") & "<BR>")
    Response.Write ( "ImageButton X , Y  coords : " colForm.Item("imgTransfer.x")  &
_
      "," colForm.Item("imgTransfer.y") & "<br>" )
End Sub
&_
ByVal  e  As  System.EventArgs ) Handles

متد Execute با استفاده از متد فوق ، یک صفحه ASPX قادر به اجرای یک صفحه ASPX دیگر می گردد( فایل های فوق ، می بایست بر روی یک سرویس دهنده وب باشند ) . پس از فراخوانی و اجرای صفحه ، کنترل مجددا" به صفحه اولیه ( صفحه ای که از طریق آن متد Execute  فعال شده است )  ، بر می گردد . روش فوق ، مشابه فراخوانی یک  تابع  در یک صفحه ASPX است . بدین ترتیب ، امکان اجرای یک فرم وب بدون خروج از فرم وب جاری ، فراهم شده و می توان  نتایج حاصل از اجرای یک فرم وب را در یک ناحیه خاص فرم وب دیگر ( مبداء) نمایش داد . صفحه ASPX فراخوانده شده ،امکان دستیابی به form و مجموعه querystring صفحه اولیه را دارا خواهد بود( مشابه متد Transfer ). بنابراین لازم است ،خصلت EnabledViewStateMac ، دارای مقدار False باشد ( ممانعت از hashing اطلاعات ViewState ) . کد زیر، یک فرم وب با نام Table.aspx را اجراء و آن را بعنوان یک کنترل Literal بر روی صفحه جاری ، نمایش خواهد داد .

Executes a WebForm and display result in current page

'Private Sub butExecute_Click ( ByVal Sender As System.Object , &_
    ByVal  e  As  System.EventArgs ) Handles butExecute.Click
    Dim swrTarget As New System.IO.StringWriter( )
    Server.Execute ( "Table.aspx" ,swrTarget )
    litTable.Text = "<h2> Table Results </h2> " & swrTarget.ToString )
End Sub

آرگومان دوم متد Execute ،اختیاری است . در صورتیکه پارامتر فوق ، حذف گردد ، نتایج بر روی صفحه جاری نوشته می گردند.  محتوی دو صفحه با هم نمایش داده شده و کنترل های سرویس دهنده موجود بر روی هر یک از صفحات ، قادر به پاسخگوئی به رویدادهای کاربر می باشد. در زمان استفاده از متد فوق و ترکیب فرم های وب بایکدیگر ، لازم است به این نکته دقت شود که هر گونه رویداد Postback که بر روی صفحه دوم  محقق می گردد ، باعث از بین رفتن اطلاعات مربوط به فرم وب اولیه ( فرمی که از طریق آن متد Execute  فراخوانده شده است ) می گردد.بنا براین ، ترکیب فرم ها با یکدیگر زمانی مفید خواهد بود که فرم وب دوم  از کنترل هائی که باعث تحقق یک رویداد PostBack می گردند ، استفاده نکرده باشد .

نمایش یک صفحه در یک پنجره جدید مرورگر بمنظورفعال نمودن یک نمونه از برنامه مرورگر ،می توان از متد Open مربوط به شی Window سمت سرویس گیرنده، استفاده نمود. عملیات فوق را می توان  صرفا" از طریق یک اسکریپت سرویس گیرنده ، انجام داد ( پنجره جدید بر روی سرویس گیرنده ایجاد می گردد). در این رابطه ، امکاناتی نیز وجود دارد که می توان از آنان  بمنظور کنترل محتوی و شکل ظاهری یک پنجره جدید مرورگر از طریق سرویس دهنده ، استفاده بعمل آورد. در ساده ترین شکل ، متد Window.Open ، بصورت زیر بخدمت گرفته می شود :

Windows.Open method

< Input  onClick="Window.Open('webform2.aspx') " type = "submit" value="New Window " >

برای استفاده از یک متغیر بعنوان URL مقصد ، می بایست webform2.aspx با یک تگ داده ، جایگزین گردد .

Target URL as variable

< Input  onClick="Window.Open('<%# urlTarget %>') " type = "submit" value="New Window ">

بمنظور بهنگام سازی ، URL مقصد از طریق کد سرویس دهنده ، می توان از یک متغیر Public و نسبت دهی داده ، استفاده نمود . کد زیر ، مقدارURL مقصد را مشخص و آن را از طریق نسبت دهی داده در زمان لود صفحه ، بهنگام می نماید.

Update Target URL

Public urlTarget As String
Private Sub Page_Load
( ByVal Sender As System.Object , &_
    ByVal  e  As  System.EventArgs ) Handles Mybase.Load
   urlTarget = "webform2.aspx"
   page.DataBind ( )
End Sub

با توجه  به اینکه متد Window.Open ، دارای آرگومان های متعدد بمنظور کنترل ویژگی های متفاوت پنجره جدید مرورگر می باشد، می توان کلاسی خاص را در این زمینه ایجاد  تا پاسخگوی تمامی تنظیمات متفاوت باشد .

خلاصه

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

  • بمنظور کنترل مقصد کاربران و تعیین زمان لازم برای حرکت به صفحه ای دیگر ، می توان از یک کنترل سرویس دهنده  HyperLink استفاده نمود . در این رابطه ، خصلت NavigateURL می تواند بصورت پویا مقداردهی گردد .

  • از متد Redirect در مواردیکه قصد فعال نمودن منابع مستقر در محدوده سرویس دهنده وب دیگری وجود داشته باشد ، استفاده می گردد( صفحه مقصد بر روی سرویس دهنده وب دیگر می باشد ) .

  • از متد Redirect ، می توان بمنظور فعال نمودن منابع  دیگر نظیر HTML استفاده نمود .

  • از متد Redirect در مواردیکه لازم است یک querystring بصورت صریح همراه با URL مشخص گردد ، استفاده می شود .

  • در مواردیکه قصد انتقال کنترل به یک صفحه ASPX موجود بر روی سرویس دهنده وب یکسان ، وجود داشته باشد ،می بایست از متد Transfer در مقابل Redirect استفاده نمود.متد Transfer از round trip غیرضروری جلوگیری و دارای کارائی  بهتری است.

  • در مواردیکه ، قصد استفاده از خروجی یک صفحه ASPX و نمایش آن در ناحیه ای خاص بر روی صفحه دیگر ، وجود داشته باشد ، می توان از متد Execute استفاده نمود .

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد