جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
حرکت بين فرم هاي وب
-(5 Body) 
حرکت بين فرم هاي وب
Visitor 1182
Category: دنياي فن آوري
اطلاعات لينک شده به يکديگر، يکي از خصايص ذاتي و مهم وب محسوب مي گردد. فرم هاي وب داراي نقشي حياتي در ايجاد برنامه وب دات نت مي باشند. با استفاده از ابرلينک ها و روش هاي حرکت بين صفحات ، امکان ارتباط ( لينک ) بين فرم هاي وب متعدد موجود در يک برنامه وب ، فراهم مي گردد. 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 , &_
ByVal  e  As  System.EventArgs ) Handles 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


متد 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 استفاده نمود .
User Comments تعداد نظرات کاربران : 1
HA

سلام با تشكر و سپاس از شما

اينجانب تمايل دارم اگه امكان داشته باشد مطالب
جديدي كه منتشر مي نماييد به ايميل من نيز بفرستيد با سپاس فراوان

1392/7/28-12:52

0
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image