در 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>
در صفحه Crosspage2.aspx قبل از تلاش برای دستيابی به شی PreviousPage ، مقدار آن با null بررسی می گردد . در صورتی كه مقدار آن معادل null باشد ، cross-page postback محقق نشده است . اين بدان معنی است كه صفحه Crosspage2.aspx مستقيما" درخواست شده است و يا به خود postback شده است . در چنين مواردی شی PreviousPage قابل دسترس نخواهد بود .
در بخش پنجم بحث خود را بر روی cross-page posting ادامه داده و با نحوه دريافت اطلاعات بيشتر از صفحه مبداء آشنا خواهيم شد .
|