مسئله؟
نحوه ارسال لیست موارد در رشته Query از جاوا اسکریپت و واکشی آن در کد پشت در Asp.net.
Query String چیست؟
Query String بخشی از URL (Uniform Resource Locator) است که برای انتقال داده/مقدار از یک صفحه وب به صفحه وب دیگر استفاده می شود.
- Query String یکی از تکنیک های مدیریت حالت سمت مشتری است.
- مثال: www.querystring.aspx?name=Vinod&place=Bangalore.
- اینجا،
- علامت سوال (؟) جداکننده است که رشته پرس و جو را از URL جدا می کند.
- name=Vinod ، نام کلید اولین پارامتر و Vinod مقدار است.
- Ampersand(&) زمانی استفاده می شود که چندین پارامتر باید ارسال شوند. در مثال بالا پارامتر دوم place=Bangalore را جدا می کند.
- حداکثر محدودیت طول رشته پرس و جو،
- در واقع هیچ محدودیتی برای رشته پرس و جو وجود ندارد، اما محدودیت توسط مرورگرهای وب و نرم افزار سرور اعمال می شود.
- مثال: مایکروسافت اینترنت اکسپلورر دارای محدودیت 2083 کاراکتر طول URL است.
- هنگامی که مقدار بیش از آن است، یک پیام خطا در اینترنت اکسپلورر تولید می کند.
- وضعیت،
- بنابراین وقتی شرایطی وجود دارد که باید پارامترهای بیشتری را پاس کنیم و از محدودیت کاراکتر مرورگر فراتر میرود، میتوانیم از JSON Array استفاده کنیم.
ارسال آرایه JSON از جاوا اسکریپت به عنوان Query String به Code Behind در Asp.net
در اینجا من نمونه ای از صفحه ثبت نام را انتخاب کرده ام که در آن پارامترهای زیادی برای ارسال به صفحه تایید ثبت نام بعدی داریم.
کد جاوا اسکریپت
Keys یک آرایه است
- var keys = [];
فشار دادن تمام پارامترها در قالب <Key, Value> در آرایه Keys،
- keys.push({
- firstName:”Vinod”,
- lastName: ”L”,
- mobileNo:”9999999999”,
- password:”Vinod@Csharpcorner”,
- dob:”01-01-1111”,
- cardType: ”Visa”,
- cardNumber:”XXXX-XXXX-XXXX-XXXX”,
- cardExpiry:”XX-XXXX”,
- cardHolder: “Vinod”
- })
تبدیل آرایه کلیدها به فرمت JSON، بررسی کنید که داده ها خالی نیستند و آن را در رشته پرس و جو ارسال کنید.
- if(JSON.stringify(keys) !== "[]") {
- window.location.href = "RegistrationConfirm.aspx?query=" + JSON.stringify(keys);
- }
بالا کوئری کلید و JSON.stringify(keys) مقدار است.
کد پشت کد سی شارپ
فضای نامی که باید برای شیء JSON deserialize گنجانده شود،
- using System.Web.Script.Serialization;
- using Newtonsoft.Json.Linq;
- using Newtonsoft.Json;
درخواست داده های رشته پرس و جو با نام کلید "پرس و جو"
- var keys = Request.QueryString["query"];
شیء سریالی JSON را به شیء JSON تبدیل کنید
- dynamic key = JsonConvert.DeserializeObject(keys);
واکشی داده ها یک به یک بر اساس کلیدها
- string firstName = key[0]["firstName"].Value;
- string lastName = key[0]["lastName"].Value;
به طور مشابه بر اساس کلیدهای ذکر شده می توان به پارامترهای بیشتر دسترسی پیدا کرد.