آموزش برنامه نویسی در مشهد

آموزش ارسال متغیر ها بین صفحات با استفاده از QueryString در asp.net 

در این آموزش asp.net به نحوه استفاده QueryString  می پردازیم . بیشتر مواقع  نیاز به ارسال مقادیر متغیر ها بین صفحات HTML یا فرم های aspx در یک برنامه بوجود می آید به عنوان مثال در صفحه اول شما اطلاعات کاربر را که شامل نام و نام خانوادگی است را دارید و نیاز به استفاده از آنها در صفحه دیگری می باشد.

برای تبادل  مقادیر متغیر ها بین صفحات ASP.NET  چندین انتخاب وجود دارد. یکی از این انتخاب ها به کارگیری پراپرتی QueryString از شئی Request است. زمانی که در حال گشت و گذار در اینترنت هستید گاها با آدرس هایی با فرمت زیر برخورد کرده اید:

http://www.localhost.com/Webform2.aspx?name=Arash&lastName=Azarniva

در این آدرس html  از QueryString برای ارسال مقادیر بین صفحات استفاده شده است .  این آدرس ۳ داده  را ارسال می کند .

  1.  Webform2.aspx این نام صفحه ای است که مرورگرتان به آن خواهد رفت.
  2. name=Arash این قسمت  متغیر name  که مقدار آن Arash  است را ارسال می کند.
  3.  lastName=Azarniva متغیر lastName  با مقدار Azarniva ارسال می شود.

همانطور که حدس زده اید  شروع QueryString با ؟ و بین متغیر ها  & قرار می گیرد. نحوه ساخت QueryString در Asp.net بسیار ساده است . فرض کنید در فرم اول دو textboxs  و یک button داریم.

کدهای زیر را در قسمت رویداد button کپی کنید :

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

در  کد بالا یک query string ساخته ایم که به وسیله آن محتوای   textboxes  را به صفحه دوم ارسال می کنیم. حال برای بازیابی مقادیر در صفحه دوم کد های زیر را در رویداد 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  شامل ۲ overloaded می باشد . شما همچنین می توانید  مقادیر را با توجه به موقعیتشان در 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

در صورتیکه در کدی را می نویسید که نیاز به ارسال متغیر هایی که شامل  کاراکتر های  & و space است می شود باید راه حل برای این مشکل پیدا کرد . اگر نگاهی به query string ایجاد شده توسط گوگل بیندازد می بینید که شامل تعداد زیادی %۲۰ است که این راه حل مورد نظر  می باشد . با جایگزینی  space با %۲۰ و & با %۲۶ برای مثال :

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);
}

از آنجایی که این قبیل مشکلات در Asp.Net متداول است راه دیگری نیز  وجود دارد و آن  استفاده از متد Server.UrlEncode می باشد. متد Server.UrlEncode مقدار query strings را به گونه ای تغییر می دهد که با مشکلی برخورد نکنید.

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)); 
}

خروج از نسخه موبایل