طراحی و توسعه وب سایتطراحی وب سایت

State management یا مدیریت وضعیت در asp.net قسمت دوم: QueryString

روشهای انتقال متغیرها و داده از یک صفحه به صفحه دیگر(QueryString)

عموما در صفحات وب نیاز به انتقال اطلاعات از یک صفحه به صفحه ی دیگر است. به طور مثال شما در صفحه اول اطلاعاتی مانند نام و نام خانوادگی را از بینندگان وب سایت خود دریافت میکنید و در صفحه ی بعد  مشتری را با نام خودش مورد خطاب قرار میدهید.

querystring

برای انتقال اطلاعات بین صفحات asp.net چندین انتخاب وجود دارد که یکی از این راه ها استفاده از  QueryString و  آبجکت Request است. زمانی که شما در حال گذر در  اینترنت هستید ممکن است با صفحات عجیبی مثل: http://www.localhost.com/Webform2.aspx?name=Sajad&lastName=Bakhtyari مواجه شوید. این آدرس های Html  از QueryString برای انتقال اطلاعات بین صفحات استفاده میکند. به طور مثال در آدرس مذکو شما ۳نوع داده را ارسال می کنید:

۱-      Webform2.aspx : این صفحه ای است که به آن انتقال خواهید یافت.

۲-      name=Sajad : این قسمت مقدار متغییر name را ارسال میکند.

۳-      lastName=Bakhtyari: این مقدار متغییر lastName را ارسال میکند.

creating_query_strings1

همانطور که متوجه شدید در داخل یک QueryString از & برای جدا سازی متغییر ها استفاده می شود. ساخت یک Querystring  در Asp.Net بسیار ساده است، به طور مثال پروژه ای ایجاد کنید که دارای ۲ فرم باشد و در فرم اول ۲ عدد TextBox و یک Button قرار دهید. سپس در رویداد Click آن کد زیر را قرار دهید.

private void btnSubmit_Click(object sender, System.EventArgs e)

{

Response.Redirect(“Webform2.aspx?Name=” +

this.txtName.Text + “&LastName=” +

this.txtLastName.Text);

}

فروشگاه ساز ایران‌هاست
یک راه حل آسان، سریع و کاربردی
برای ورود به فضای آنلاین

فروشگاه آنلاین راه اندازی کنید

قسمت اول این کد یک query string می سازد و محتویات TextBox ها را به فرم دوم ارسال میکند.  حال برای دریافت اطلاعات ارسال شده در فرم دوم باید کد زیر را در قسمت page_load قرار دهید.

private void Page_Load(object sender, System.EventArgs e)
{
this.txtBox1.Text = Request.QueryString["Name"];
this.txtBox2.Text = Request.QueryString["LastName"];
}

Request.QueryString  در اینجا از یکی از راه ای موجود مقدار دهی شده است. شما میتوانید از روش های مختلفی محتویات Querystring را بازیابی کنید. مثلا:

private void Page_Load(object sender,

 

System.EventArgs e)
{
this.txtBox1.Text = Request.QueryString[0];
this.txtBox2.Text = Request.QueryString[1];
}

راه دیگر بازیابی محتویات Querystring بدون نام بردن تک تک متغیر ها استفاده از حلقه ها است، مانند:

foreach( string s in Request.QueryString)
{
Response.Write(Request.QueryString[s]);
}

ویا

for (int i =0;i < Request.QueryString.Count;i++)
{
Response.Write(Request.QueryString[i]);
}

استفاده از QueryString بسیار ساده است، اما عیب های زیر را دارد:

۱-      QueryString ها محدودیت طول دارند، در صورتی که اطلاعات زیادی را از این طریق بخواهیم ارسال کنیم با مشکل مواجه میشویم.

۲-   رشته ی QueryString قابل مشاهده در AddressBar مرورگر ها است، به همین دلیل نمیتوان از انتقال اطلاعات مهم از این طریق اقدام کرد.

۳-      QueryString نمیتواند کاراکتر های & و فاصله را انتقال دهد.

196

به طور مثال اگر شما از کد زیر استفاده کنید، متوجه خواهید شد که در انتقال کاراکتر های فاصله و & دچار مشکل است. برای حل این مشکل باید در متن به جای استفاده از  کاراکتر فاصله باید از ۲۰% استفاده و به جای استفاده از & باید از ۲۶% استفاده کرد. به طور مثال شما میتوانید کد زیر را به جای کد موجود در button خود قرار دهید.

private void btnSubmit_Click(object sender, System.EventArgs e)
{
string p1 = this.txtName.Text.Replace("&","%26");
p1 = this.txtName.Text.Replace(" ","%20");
string p2 = this.txtLastName.Text.Replace("&","%26");
p2 = this.txtName.Text.Replace(" ","%20");
            "WebForm2.aspx?" +
            "Name=" + p1 +
            "&LastName=" + p2;
Response.Redirect(p2);
}

حال برای اینکه دیگر نیازی به جایگزینی کاراکتر های فاصله و & با ۲۰% و ۲۶% نباشد میتوانید از متد Server.UrlEncode. Server.UrlEncode استفاده نمایید تا Querystring شما را encode کرده و دیگر به مشکل برخورد نکنید.

کد زیر بیانگر این موضوع است.

private void btnSubmit_Click(object sender, System.EventArgs e)
{
Response.Redirect("WebForm2.aspx?" +
"Name=" +   Server.UrlEncode(this.txtName.Text) +
"&LastName=" + Server.UrlEncode(this.txtLastName.Text));
}

به این نوشته امتیاز دهید
[Total: 0 Average: 0]

با کارت بانکی باشگاه ایران هاست پولتان به حسابتان باز می گردد.

همین حالا رایگان عضو شوید

مدیر بلاگ

مشخصات مدیر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن