آموزش ارسال متغیر ها بین صفحات با استفاده از 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

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

در صورتیکه در کدی را می نویسید که نیاز به ارسال متغیر هایی که شامل  کاراکتر های  & و 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)); 
}

asp.net

ورکشاپ رایگان دوره های تخصصی برنامه نویسی

شما این فرصت را دارید، با تکمیل فرم زیر، قبل از انتخاب دوره آموزشی مناسب خود، در ورکشاپ رایگان دوره های تخصصی برنامه نویسی شرکت کنید
  • این فیلد برای اعتبار سنجی است و باید بدون تغییر باقی بماند .

درباره‌ی محمد آذرنیوا

من محمد آذرنیوا، نویسنده و مدرس دوره های برنامه نویسی ، طراحی وب و تحلیل گر پایگاه داده هستم و قصد دارم در این وبسایت مطالب کاربردی در این زمینه را با شما به اشتراک بگذارم ...

همچنین ببینید

دوره آموزش طراحی سایت با ASP.NET مشهد

آموزش طراحی سایت با ASP.NET مشهد

آموزش طراحی سایت مشهد (دوره آموزشی) : تکنولوژی ASP.NET ، یک تکنولوژی روز برای ساخت صفحات …

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

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