State Management در ASP. NET 2.0 (بخش چهارم)
آنچه تاكنون گفته شده است :
بخش اول |
مفاهيم اوليه |
: |
ضرورت مديريت state در برنامه هاي وب |
بخش دوم |
view state |
: |
نحوه ايمن سازي اطلاعات ذخيره شده در view state |
بخش سوم |
view state |
: |
نحوه نگهداري Member Variables و اشياء سفارشي |
يكي از مهمترين محدوديت هاي view state ، شعاع استفاده از اطلاعات ذخيره شده در آن توسط ساير صفحات وب است . اطلاعات ذخيره شده در view state صرفا" توسط صفحه اي كه آنها را ايجاد كرده است قابل استفاده مي باشند و ساير صفحات نمي توانند از اطلاعات فوق استفاده نمايند . به عنوان مثال ، در صورتي كه كاربر به صفحه اي ديگر حركت و يا هدايت شود ، اطلاعات ذخيره شده در view state قابل دستيابي نبوده و عملا" از بين خواهند رفت . براي غلبه بر محدوديت فوق ( انتقال اطلاعات از يك صفحه به صفحه ديگر )، از روش هاي متعدد ديگري مي توان استفاده كرد .
در اين بخش ، با روش انتقال اطلاعات از يك صفحه به صفحه اي ديگر با استفاده از cross-page posting آشنا خواهيم شد .
cross-page posting
يكي از امكانات جديد ارائه شده در ASP. NET 2.0 ، امكان postback يك صفحه به صفحه اي ديگر است ( برخلاف گزينه پيش فرض كه هر صفحه به خود postback مي گردد ) .
بدين منظور خصلت جديد PostBackUrl در كنترل هائي نظير ImageButton ، LinkButton و Button پيش بيني شده است . براي استفاده از ويژگي فوق كافي است مقدار PostBackUrl برابر با آدرس صفحه مقصد در نظر گرفته شود . بدين ترتيب ، پس از كليك بر روي دكمه موجود بر روي فرم ، صفحه به همراه تمامي مقادير كنترل هاي ورودي موجود بر روي آن براي آدرس مشخص شده ارسال مي گردد .
مثال
در اين مثال بر روي فرم وب از دو كنترل text box و يك كنترل button استفاده شده است ( صفحه Crosspage1.aspx ) . پس از كليك بر روي دكمه موجود بر روي فرم ، اطلاعات موجود بر روي فرم براي صفحه اي با نام Crosspage2.aspx ارسال مي گردد .
صفحه Crosspage1.aspx |
<%@ Page Language="VB" Culture="fa-IR" UICulture="fa-IR" %>
<script runat="server"> </script>
< html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" > <head id="Head1" runat="server"> <title>صفحه اول </title> </head> <body style="font-family: Tahoma"> <form id="form1" runat="server" > <div> نام <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox><br /><br /> نام خانوادگي <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox> <br /> <br /> <asp:Button runat="server" ID="cmdPost" PostBackUrl="CrossPage2.aspx" Text="ارسال به صفحه ديگر" Font-Names="Tahoma" /><br /> </div> </form> </body> </html> |
صفحه Crosspage1.aspx شامل هيچگونه كدي نمي باشد .
پس از اجراي كد فوق و كليك بر روي دكمه "ارسال به صفحه ديگر" ، صفحه براي CrossPage2.aspx ارسال مي گردد . صفحه Crosspage2.aspx با استفاده از خصلت Page.PreviousPage قادر به برقراري ارتباط با صفحه Crosspage1.aspx خواهد بود .
كد زير نحوه دريافت و نمايش عنوان صفحه قبلي را در صفحه Crosspage2.aspx نشان مي دهد .
صفحه Crosspage2.aspx |
<%@ Page Language="VB" Culture="fa-IR" UICulture="fa-IR" %>
<script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) If PreviousPage IsNot Nothing Then lblInfo.Text = "شما از صفحه اي با عنوان " & _ "<b>" & PreviousPage.Header.Title & "</b>" & _ " به اين صفحه آمده ايد" & "<br />" End If End Sub </script>
< html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" > <head id="Head1" runat="server"> <title>صفحه دوم</title> </head> <body style="font-family: Tahoma"> <form id="form1" runat="server" > <div> <asp:Label ID="lblInfo" runat="server" Font-Size="Small"></asp:Label> </div> </form> </body> </html> |
شكل 1 ، نحوه انتقال اطلاعات از يك صفحه به صفحه ديگر را نشان مي دهد .
شكل 1 : نحوه انتقال اطلاعات از يك صفحه به صفحه ديگر
در صفحه Crosspage2.aspx قبل از تلاش براي دستيابي به شي PreviousPage ، مقدار آن با null بررسي مي گردد . در صورتي كه مقدار آن معادل null باشد ، cross-page postback محقق نشده است . اين بدان معني است كه صفحه Crosspage2.aspx مستقيما" درخواست شده است و يا به خود postback شده است . در چنين مواردي شي PreviousPage قابل دسترس نخواهد بود .
در بخش پنجم بحث خود را بر روي cross-page posting ادامه داده و با نحوه دريافت اطلاعات بيشتر از صفحه مبداء آشنا خواهيم شد .
برگرفته از سايت سخا روش