سلام ,

به طور پیش فرض یک Page به خودش Submit میشه .با استفاده از Cross Page Posting میتونیم این رفتار پیش فرض رو عوض کنیم و صفحه مقصد رو مشخص کنیم .

در این حالت ASP.NET 2.0 این امکان رو در اختیار ما قرار میده که در صفحه مقصد به Value کنترلهای صفحه ابتدایی دسترسی داشته باشیم .

فرض کنید که یک فرم چند صفحه ای دارید و میخواهید اطلاعاتی رو از کاربر در چندین صفحه جمع آوری کنید . با Cross Page Posting این کار به سادگی امکان پذیر است .

با هم یک مثال رو دنبال میکنیم


  • دو صفحه بنام های Page1.aspx و Page2.aspx به پروژه خودتون اضافه کنید .
  • در Page1.aspx یک کنترل TextBox و یک Button اضافه کنید .
  • خاصیت PastBackUrl از Button رو Page مقصد ست کنید .

یعنی در Page اول باید همچین چیزی داشته باشید :
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Page2.aspx" />
</div>
</form>
</body>


در Pagee2.aspx یک کنترل مثل Lable در فرم قرار دهید
در رویداد Load صفحه به شکل زیر میتونید به مقدار TextBox از صفحه page1.aspx دسترسی داشته باشید :

    protected void Page_Load(object sender, EventArgs e)
{
if(Page.PreviousPage!= null)
{
TextBox txt1 = (TextBox) PreviousPage.FindControl("TextBox1");
Label1.Text = txt1.Text;
}
}


همانطور که ملاحظه میکنید اول برسی میکنیم که خاصیت PreviousPage شی Page مقدار داشته باشید . بعد که اطمینان حاصل کردم با استفاده از متد FindControl شی PreviousPage میتونیم کنترل مورد نظر رو پیدا کنیم و بعد اون رو Cast میکنیم . حال میتونیم از Property های اون کنترل مورد نظر استفاده کنیم .

سربلند باشید