حرکت بين فرم های وب
روش های حرکت بين صفحات
• کنترل 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"> |
در صورتيکه مقصد يک hyperlink ،وابسته به شرايط و حالاتی خاص بر سرويس دهنده می باشد ، می توان مقدار NavigateUrl را بصورت پويا تغيير داد .
Change NavigateUrl Value |
Private Sub Button1_Click ( ByVal sender As System.Object,&_ |
پس از اجراء کد فوق ( کد فوق همزمان با کليک نمودن بر روی دکمه Button1 در فرم وب ، اجراء می گردد ) ، در صورتيکه کاربر بر روی لينک تعريف شده ( جدول قبل ) ، کليک نمايد ، در مقابل فعال شدن WebForm2.aspx ، فرم وب WebForm3.aspx اجراء خواهد شد.
کنترل سرويس دهنده hyperlink ، با توجه به مقدار خصلت NavigateURL ، به رويدادهای محقق شده با توجه به عمليات ( کليک ) کاربران ، پاسخ خواهد داد . اين نوع کنترل ها ، توانائی پاسخگوئی به رويدادهای ايجادشده در سمت سرويس دهنده را دارا نمی باشد.در صورتيکه قصد تفسير يک رويداد کليک را از طريق کد مورد نظر داشته باشيم ، می توان از کنترل LinkButton و يا کنترل سرويس دهنده ImageButton استفاده نمود . بمنظور حرکت از طريق يک LinkButton و يا ImageButton ، می توان از متد Response.Redirect استفاده نمود .
متد Redirect
Response.Redirect |
Private Sub LinkButton1_Click ( ByVal Sender As System.Object , &_ |
متد Transfer
Disable hashing |
<% Page language = "vb" EnableViewStateMac = "false" .... %> |
کد زير ( روتين پاسخگو در مقابل رويداد کليک بر روی دکمه imgTransfer ) ، نحوه ارسال اطلاعات بين فرم ها را با استفاده از متد Transfer نشان می دهد :
Information Passed between forms |
'webform1.aspx |
با استفاده از متد Form مربوط به شی Request می توان اطلاعات ViewState را از فرم وب مبداء ، بازيابی نمود . کد زير ، نحوه نمايش مقادير کنترل TextBox و مختصات X,Y را ازطريق رويداد کليک مربوط به دکمه ImageButton از Webform1.aspx در Webform2.aspx نشان می دهد .
Retrieve ViewState Information |
'Private Sub Page_Load ( ByVal Sender As System.Object , &_ |
متد Execute
Executes a WebForm and display result in current page |
'Private Sub butExecute_Click ( ByVal Sender As System.Object , &_ |
آرگومان دوم متد Execute ،اختياری است . در صورتيکه پارامتر فوق ، حذف گردد ، نتايج بر روی صفحه جاری نوشته می گردند. محتوی دو صفحه با هم نمايش داده شده و کنترل های سرويس دهنده موجود بر روی هر يک از صفحات ، قادر به پاسخگوئی به رويدادهای کاربر می باشد. در زمان استفاده از متد فوق و ترکيب فرم های وب بايکديگر ، لازم است به اين نکته دقت شود که هر گونه رويداد Postback که بر روی صفحه دوم محقق می گردد ، باعث از بين رفتن اطلاعات مربوط به فرم وب اوليه ( فرمی که از طريق آن متد Execute فراخوانده شده است ) می گردد.بنا براين ، ترکيب فرم ها با يکديگر زمانی مفيد خواهد بود که فرم وب دوم از کنترل هائی که باعث تحقق يک رويداد PostBack می گردند ، استفاده نکرده باشد .
نمايش يک صفحه در يک پنجره جديد مرورگر
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 |
با توجه به اينکه متد Window.Open ، دارای آرگومان های متعدد بمنظور کنترل ويژگی های متفاوت پنجره جديد مرورگر می باشد، می توان کلاسی خاص را در اين زمينه ايجاد تا پاسخگوی تمامی تنظيمات متفاوت باشد .
خلاصه
• بمنظور کنترل مقصد کاربران و تعيين زمان لازم برای حرکت به صفحه ای ديگر ، می توان از يک کنترل سرويس دهنده HyperLink استفاده نمود . در اين رابطه ، خصلت NavigateURL می تواند بصورت پويا مقداردهی گردد .
• از متد Redirect در موارديکه قصد فعال نمودن منابع مستقر در محدوده سرويس دهنده وب ديگری وجود داشته باشد ، استفاده می گردد( صفحه مقصد بر روی سرويس دهنده وب ديگر می باشد ) .
• از متد Redirect ، می توان بمنظور فعال نمودن منابع ديگر نظير HTML استفاده نمود .
• از متد Redirect در موارديکه لازم است يک querystring بصورت صريح همراه با URL مشخص گردد ، استفاده می شود .
• در موارديکه قصد انتقال کنترل به يک صفحه ASPX موجود بر روی سرويس دهنده وب يکسان ، وجود داشته باشد ،می بايست از متد Transfer در مقابل Redirect استفاده نمود.متد Transfer از round trip غيرضروری جلوگيری و دارای کارائی بهتری است.
• در موارديکه ، قصد استفاده از خروجی يک صفحه ASPX و نمايش آن در ناحيه ای خاص بر روی صفحه ديگر ، وجود داشته باشد ، می توان از متد Execute استفاده نمود .