حذف QueryString از یک صفحه

یکشنبه 29 تیر 1393

هنگامی که شما به صفحه ای اطلاعات را با متد GET ارسال میکنید، در مواقعی ممکن است که نیاز داشته باشید تا پس از fetch داده های ارسالی آنها را به دلایل مختلف از بین ببرید. در این مقاله قصد داریم نحوه اجرای این روش را توضیح دهیم.

حذف QueryString از یک صفحه

بهتر است پیش از اینکه به نحوه اجرای این روش بپردازیم، به کاربرد آن هم اشاره ای داشته باشیم.

فرض کنید شما یک QueryString با نام request را به صفحه مورد نظرتان ارسال کرده اید و در متد Page_load بنا بر مقادیر درون request قرار است دستوراتی را متعاقبا اجرا کنید (به عنوان مثال insert، delete، edit  و ...)

حال هنگامی که شما هر بار به هر نحوی در صفحه تان PostBack داشته باشید مقادیر دوباره از QueryString واکشی میشود و روند مورد نظرتان از نو اجرا میگردد. حال تنها با حذف QueryString مورد نظر میتوانید این مشکل را برطرف سازید.

روش حذف QueryString

اگر شما مستقیما بخواهید دستور زیر را اجرا کنید با این خطا مواجه میشوید که نمیتواند QueryString مورد نظر را پاک کند چون این متغییر ReadOnly است.

Request.QueryString.Remove("request")

 

حال با اضافه کردن کد زیر در ابتدا آن را به editable تبدیل میکنید و سپس آن را حذف میکنید:

PropertyInfo isreadonly = 
  typeof(System.Collections.Specialized.NameValueCollection).GetProperty(
  "IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
// make collection editable
isreadonly.SetValue(this.Request.QueryString, false, null);
// remove
this.Request.QueryString.Remove("request");

 

کافیست تمام بلوک بالا را در یک متد قرار دهید و هر جا که نیاز به حذف QueryString مورد نظر دارید آن را حذف کنید.

مهرداد کاهه

نویسنده 8 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید