دانلود رایگان فیلم آموزش ASP.NET قسمت هفتم
انواع روشهای انتقال مقادیر بین فرمهای وب در ASP.NET
فرم هاي وب Asp.Net مدل برنامهنویسی رویدادگرای شگرفی را برای توسعهگران فراهم میكنند. این موضوع طراحی سرتاسر برنامه كاربردی شما را ساده میكند ولی مسائل و مشكلات خاص خود را نشان میدهد. براي مثال در ASP كلاسيك شما به آساني مي توانيد مقادير را با استفاده از POST از يك صفحه ASP به صفحه اي ديگر ارسال نماييد. اما اگر مي خواهيد در مدل فرمهاي وب (يا همان مدل برنامه نويسي ASP.NET) برنامه نويسي كنيد، همان چيز در ASP.NET ممكن نمي باشد. اما راههايي براي غلبه بر اين وضعیت وجود دارند كه میتوانند مورد استفاده قرار بگیرند. در این مقاله موضوعات زیر را مورد بررسی قرار خواهیم داد:
-
چگونگي ارسال مقادير با استفاده از QueryString
-
چگونگي استفاده از متغير هاي Session براي ارسال مقادير
-
چگونگي استفاده از متد Server.Transfer براي ارسال مقادير
استفاده از QueryString
QueryString یك مكانیسم قدیمی برای ارسال مقادیر در بین صفحات است. مزیت اصلی این متد سادگی آن است. اما عیب آن این است كه پس از ارسال، مقادیر در نوار آدرس مرورگر قابل مشاهده میباشند و نمیتوان آبجكتها را از این طریق ارسال كرد. این متد مناسبترین راه برای ارسال تعداد كمی از مقادیری است كه نیازی به محافظت از دید دیگران ندارند. برای اعمال كردن این متد مراحل زیر را انجام دهید:
-
يك فرم وب با كنترل هايش را درست كنيد.
-
يك كنترل دكمه اي Button يا LinkButton براي ارسال فرم به سرور بر روي فرم قرار دهيد.
-
در رويداد كليك دكمه يك متغير از نوع String تعريف كنيد كه URL را براي فرم ديگر كه مقادير قرار است به آنجا ارسال شوند، نگه مي دارد.
-
مقادير كنترل را در قالب پارامترهاي QueryString در متغير از نوع String قرار دهيد.
-
از متد Response.Redirect كه از متغير String تعريف شده استفاده مي كند براتي هدايت كاربر به صفحه ديگر استفاده كنيد.
قطعه كد زیر چگونگی انجام این مراحل را نشان میدهد:
1 2 3 4 5 6 7 8 |
private void Button1_Click(object sender, System.EventArgs e) { string url; url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; Response.Redirect(url); } |
فرم وب منبع.
1 2 3 4 5 |
private void Page_Load(object sender, System.EventArgs e) { Label1.Text=Request.QueryString["name"]; Label2.Text=Request.QueryString["email"]; } |
فرم وب مقصد.
استفاده از متغیرهای Session
در اين روش بايد مقادير كنترل ها را در متغير هاي Session ذخيره كنيم و در فرم وب ديگري به آنها دسترسي داشته باشيم . همانطور كه مي دانيد داده هاي زياد در Session ممكن است اختلالاتي را در سرور بجود آورد، بنابراين بايد از اين متد بدرستي استفاده شود. البته هر وقت كه خواستيد مي توانيد متغير هاي Session را از بين ببريد. مراحل اصلي براي استفاده از اين متد به ترتيب زير مي باشد.
-
یك فرم وب با كنترلهایش را درست كنید.
-
يك كنترل دكمه اي Button يا LinkButton براي ارسال فرم به سرور بر روي فرم قرار دهيد.
-
در رویداد كلیك دكمه، متغیرهای Session را تعریف كرده و مقادیر كنترلها را در آنها قرار دهید.
-
كاربر را با استفاده از Server.Transfer به صفحه اي ديگر هدايت كنيد.
-
در فرم وب دیگر متغیرهای Session را دریافت كرده و پس از دریافت اگر لازم باشد آنها را پاك كنید.
كد زیر این مراحل را در عمل نشان میدهد:
1 2 3 4 5 6 7 |
private void Button1_Click(object sender, System.EventArgs e) { // textbox1 and textbox2 are webform controls Session["name"]=TextBox1.Text; Session["email"]=TextBox2.Text; Server.Transfer("anotherwebform.aspx"); } |
فرم وب منبع
1 2 3 4 5 6 7 |
private void Page_Load(object sender, System.EventArgs e) { Label1.Text=Session["name"].ToString(); Label2.Text=Session["email"].ToString(); Session.Remove("name"); Session.Remove("email"); } |
فرم وب مقصد
استفاده از Server.Transfer
این روش متدی پیچیده ولی روش ماهرانهای برای ارسال مقادیر بین صفحات است. در اینجا مقادیری را كه میخواهید در صفحات دیگر به آنها دسترسی داشته باشید به عنوان خصوصیات كلاس صفحه بیان میكنید. در كل این متد واضحتر و شیءگراتر از متدهای قبلی است. مراحل زیر را برای استفاده از این متد بترتیب دنبال كنید:
-
يك فرم وب با كنترل هايش را ايجاد نماييد.
-
رويدادهاي خصوصيت Get كه مقادبر كنترل ها را بر خواهند گرداند را تعريف كنيد.
-
يك كنترل دكمه اي Button يا LinkButton براي ارسال فرم به سرور بر روي فرم قرار دهيد.
-
در رويداد كليك دكمه متد Server.Transfer كه اجراي برنامه را به فرم تعيين شده انتقال مي دهد فراخواني كنيد.
-
در فرم دوم شما مي توانيد از خصوصيت Context.Handler به يك نمونه از فرم اول دسترسي داشته باشيد. سپس مي توانيد از خصوصيت Get كه براي دسترسي به مقادير كنترل ها ايجاد كرده ايم استفاده كنيد.
كد زیر برای اجرای یك نمونه از مراحل بالا تدارك دیده شده است. خصوصیات زیر را به فرم وب اضافه كنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public string Name { get { return TextBox1.Text; } } public string EMail { get { return TextBox2.Text; } } |
فرم وب منبع
حال Server.Transfer را فراخواني كنيد.
1 2 3 4 |
private void Button1_Click(object sender, System.EventArgs e) { Server.Transfer("anotherwebform.aspx"); } |
فرم وب منبع
1 2 3 4 5 6 7 8 9 10 11 |
private void Page_Load (object sender, System.EventArgs e) { //create instance of source web form WebForm1 wf1; //get reference to current handler instance wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; Label2.Text=wf1.EMail; } |
فرم وب مقصد
خب این تقریبا چیزی هایی بود که در این قسمت از آموزش و جود داشت.
مباحث این قسمت:
- انتقال مقادیر بین فرمهای وب در ASP.NET
[eyesonly level=”administrator, editor, author, contributor, subscriber, pending, activate_plugins” hide=”yes”] لینک دانلود فقط برای اعضا میباشد [/eyesonly]
[eyesonly level=”contributor”] دانلود با لینک مستقیم [/eyesonly]