PDA

View Full Version : آموزش: ارسال به صورت Cross Page



Mostafa_Dindar
پنج شنبه 14 مرداد 1389, 18:06 عصر
سلام ,

به طور پیش فرض یک 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 های اون کنترل مورد نظر استفاده کنیم .

سربلند باشید

A.S.Roma
پنج شنبه 14 مرداد 1389, 21:29 عصر
خیلی ممنون از آموزشتون
حالا اگر نیاز باشه چنین کاری رو انجام بدیم با این تفاوت که توی Code Behind یوزر رو بفرستیم یه پیج دیگه راه کار چیه !؟
response.redirect که درست کار نمی کند ( چون ظاهرا" اصلا" برای این منظور تعبیه نشده )
کاری هم به Session و Cookie و ... ندارم .

فکر کنم با Sever.Transform جواب بده درسته !؟
ایا راه دیگری هم وجود دارد .
ممنون.

Mostafa_Dindar
پنج شنبه 14 مرداد 1389, 21:58 عصر
خیلی ممنون از آموزشتون
حالا اگر نیاز باشه چنین کاری رو انجام بدیم با این تفاوت که توی Code Behind یوزر رو بفرستیم یه پیج دیگه راه کار چیه !؟
response.redirect که درست کار نمی کند ( چون ظاهرا" اصلا" برای این منظور تعبیه نشده )
کاری هم به Session و Cookie و ... ندارم .

فکر کنم با Sever.Transform جواب بده درسته !؟
ایا راه دیگری هم وجود دارد .
ممنون.

خواهش میکنم .

اگر منظورتون از ارسال کاربر , داده های کاربر باشه که باید از یکی از روشهای State Mangement استفاده کنیم .

ولی تصور میکنم منظور شما هدایت کاربر به یک صفحه دیگست . هر دو متد یعنی Response.Redirect و Server.Transfer این کار رو انجام میدن .ولی Server.Transfer گزینه مناسبتری هست .

در مورد تفاوت این دو متد این مقاله (http://aspdotnetfaq.com/Faq/what-is-the-difference-between-server-transfer-and-response-redirect-methods.aspx) خوب گفته :


Response.Redirect should be used when:

we want to redirect the request to some plain HTML pages on our server or to some other web server
we don't care about causing additional roundtrips to the server on each request
we do not need to preserve Query String and Form Variables from the original request
we want our users to be able to see the new redirected URL where he is redirected in his browser (and be able to bookmark it if its necessary)

Server.Transfer should be used when:


we want to transfer current page request to another .aspx page on the same server
we want to preserve server resources and avoid the unnecessary roundtrips to the server
we want to preserve Query String and Form Variables (optionally)
we don't need to show the real URL where we redirected the request in the users Web Browser

maryammb66
یک شنبه 15 اسفند 1389, 13:02 عصر
میشه به منم بگید تو دلفی چطوری با cross کار کنم

omid12
سه شنبه 16 فروردین 1390, 17:39 عصر
اگه مثلا بخوایم اطلاعات یک CheckBoxList رو به صفحه دیگه انتقال دهیم چاره کار چیه؟

elena
جمعه 21 مهر 1391, 12:13 عصر
سلام،من از کد شما برای ارسال استفاده کردم ولی خطای زی رو میده Object reference not set to an instance of an object.

elena
جمعه 21 مهر 1391, 18:58 عصر
میشه یکی هم جواب ما رو بده

meisam3322
شنبه 22 مهر 1391, 01:45 صبح
سلام،من از کد شما برای ارسال استفاده کردم ولی خطای زی رو میده Object reference not set to an instance of an object.

آیا تکست باکس صفحه اول دارای مقدار هست ؟

elena
شنبه 22 مهر 1391, 16:09 عصر
آیا تکست باکس صفحه اول دارای مقدار هست ؟مقدارش رو کاربر در حال اجرا وارد میکنه دیگه