أريد طريقة لألغاء الـQuery string و الـParams
أريد طريقة لألغاء الQuery string
السلام عليكم
أخي الكريم أحمد
المفروض إذا أردت هذا الا تستخدم GET لنقل البيانات بين الصفحات ، واستخدم طريقة أخرى مثلاً POST او الـ SESSION أو الكوكيز أو الكاش أو غير ذلك من الطرق المعروفة
مداخلة بسيطة!!!!!
ال QueryString ليست عيب و إن كانت كذلك لتخلصت منها ميكروسوفت .. هي تعتبر من طرق "الحفاظ على البيانات" مثل ال Session وال Cookies وال Input Fields و ال Application Object و ال Cache ولكل واحدة منها وقت مناسب كي يكون الأداة المناسبة لحفظ البيانات وذلك يعتمد على مصادر السيرفر Server Resources و درجة الحماية Security Level أو لأهداف أخرى يقررها مطور النظام ..
إن كنت تملك بيانات غير سرية أو ليس لها أهمية فيمكنك أن تستخدم ال QueryString و لكن كي تتخلص منها من شريط العنوان فإن الطريقة الشائعة و المثلى "حتى مع طريقة ال Post " هي عمل Response.Redirect بعد الإنتهاء من استخدام هذه البيانات المرسلة ... أما إن كنت تحتاج للأمان فأنا أنصحك بأن تستخدم ال Session لحفظ تلك البيانات ....
تحياتي
You can fly while you can touch the sky
المشكلة أن المبرمجين لا يفهمون الفكرة الأساسية من وجود الQueryString فهو ليس طريقة لحفظ البيانات فهو أكبر من هذا
ٍسأحاول سرد استخدامات له بسرعة لتقريب الفكرة
لنفترض أنك تريد انشاء موقع أخبار و ستضع في الصفحة الأولى عناوين المواضيع فقط ثم تضع رابط للموضوع بالتفصيل و سيكون رابط الموضوع عبارة عن اسم الصفحة متبوعاً برقم الموضوع مثل
news.aspx?articleid=10
و هكذا سيمكنك قراءة رقم الموضوع الذي اختاره المستخدم في صفحة news.aspx و من ثم تقوم بتحميل المقال في الصفحة
(كلام جميل و معروف)
و لكن ماذا لو أنني لم استخدم هذه الطريقة و استخدمت الsessions مثلاً عن طريق عمل كل رابط في الصفحة الرئيسية LinkButton و في الحدث الخاص بهذا الLink قمت بحفظ رقم الموضوع في Session ثم تحويل المستخدم الى الصفحة news.aspx بدون استخدام أي QueryString و كل ما سأفعله في الكود الخاص بصفحة news.aspx هو قراءة الsession و استرجاع البيانات و ستنجح الطريقة أيضاً بدون الحاجة لوضع أي بارامترات مع الURL
و لكن السؤال أي الطريقتين أفضل ؟؟؟؟؟؟ أو على الأقل أنسب؟؟؟
بالطبع طريقة الQueryString أفضل فهي تمكن المستخدم من عمل Bookmark للصفحة و اعطاء رابط المقال لأصدقاؤه لقراءة المقال مباشرة دون الحاجة لدخول الصفحة الرئيسية و هذا يشبه طريقة عمل الروابط في المنتدى هنا فكل المعلومات عن مكان المشاركات توجد في الURL حيث يكفيك وضعه في الBrowser لتصل الى الموضوع مباشرة فقد تم تحديد جميع البيانات اللازمة للصفحة لكي تعمل داخل الURL
أما طريقة الSessions فلن تسمح لك بكل ما سبق فلن يمكنك عمل Bookmark للصفحة news.aspx لأنك بمجرد انتهاء صلاحية الSession و محاولتك دخول الصفحة news.aspx مبائرة لن تجد الصفحة ما يفسر لها سبب وجودك أو ماهو الموضوع الذي تريد قراءته...
Sr. Software Development Engineer
Hulu, LLC
My Blogs
الكلام ده كله معروف :D أنا أساسا كنت شغال Classic ASP قبل كده و اكتر حاجة كنت بستعملها فى حياني كانت الـQuiryString
بس الى بيحصل فى الدوت نت أن التQuerystring مش بتروح بتفضل لزقة :D و ديه عملا لى مشكلة فالى يعرف بتتمسح أي من غير ما يقول لي Querystring.clear أكون متشكر جدا ليه :D
كيف تختفي ال Querystring ؟؟
لو اختفت فهذا يعني أنها غير موجودة أصلاً ولن تستطيع الوصول إليها من داخل الصفحة
إذا كانت بياناتك سرية فلا مناص من أسلوب آخر غير تمرير المتغيرات من خلال الـ URL
أما إذا كان مقصدك في كيفية حذفها بعد قرائتها من داخل الكود ، فهنا يمكنك عمل تحويل للصفحة نفسها بدون بارمترات لكن هذا غير عملي
تم تعديل هذه المشاركة بواسطة محمد النحراوي في 24 نوفمبر 2005 في 03:24
إقتباس :
المشكلة أن المبرمجين لا يفهمون الفكرة الأساسية من وجود الQueryString فهو ليس طريقة لحفظ البيانات فهو أكبر من هذا
-------------------------------------------
أولا أقول لمشرف قسم ال #C أن ما ذكره هو يطلق عليه أيضا حفظ البيانات !!!!!!!!!!!!!!!!! راجع الكتب جيدا ;)
لو أنك أردت أن تستخدم أرقام تصنيفات مثلا لمتجر إلكتروني فإنك تحصل من خلال السجلات المعروضة على CategoryID و بالتالي إن كنت تريد تمريرها لصفحة أخرى فإنك تكون قد حافظت عليها خلال إنتقالك من تلك الصفحة للصفحة الجديدة التي ستعرض المنتجات إعتمادا على رقم التصنيف!!
إقتباس اخر :
على العكس لو اختفت مع الPostBack كانت المشكلة أكبر
_____________________
بالعادة نستخدم ال QueryString لحفظ البيانات لوقت ليس بالكبير كالإنتقال لصفحة واحدة وبالتالي هناك يمكننا إستقبال القيمة و التعامل معها و من ثم نعيد التوجيه Redirect لأي صفحة مناسبة
تحياتي للجميع
You can fly while you can touch the sky
شيء أخر نسيت أن أذكره ................... الأخ السائل أنظر لموضوع ال ViewState بال DotNet و أنظر إن كان لها القدرة على أن تكون مكان الأخريات
You can fly while you can touch the sky
بالنسبة للاقتباس الأول فأنا لم أقصد أنه لا يصلح لحفظ البيانات بل أن ما قصدته هو أن الفائدة من استخدامه أكثر من مجرد حفظ بيانات و هو جعل الصفحة نفسها Independent أو مستقلة عن أي صفحة أخرى فأنت تعطيعا الParameters التي تحتاجها عن طريق الURL فقط و هذا يعني أنه يمكن استدعاءها من أي صفحة أخرى سواء قمت أنت أو غيرك ببرمجتها أو حتى استدعتها صفحة أخرى خارج الApplication الخاص بك و هي طريقة حفظ أشمل من الSessions و الViewState و التي تنتهي حدودها بانتهاء حدود الApplication أو بانتهاء زمن الصلاحية ....
اقتباسبالعادة نستخدم ال QueryString لحفظ البيانات لوقت ليس بالكبير كالإنتقال لصفحة واحدة وبالتالي هناك يمكننا إستقبال القيمة و التعامل معها و من ثم نعيد التوجيه Redirect لأي صفحة مناسبة
بالطبع الQueryString يستخدم لحفظ البيانات لصفحة واحدة و لكن ماقصدته هو أن الPostBack هو في النهاية recall لنفس الصفحة و في هذه الحالة ستحتاج الى الQueryString لتعرض الصفحة مرة أخرى و أرجو ألا ترد بأنه يمكن قبل عمل الPostBack أن أقوم بتخزين الParameters داخل الContext أو داخل الViewState فهذا أغبى رد و أسخف طريقة في أغلب الأحوال...
و أكبر دليل على استخدام الQueryString هو المنتدى فستجد أن كل شئ يتم ارساله في الQueryString و هكذا يمكن للأعضاء وضع وصلات للمواضيع و نتائج البحث على مواقع اخرى و ستعمل الوصلات بشكل طبيعي
Sr. Software Development Engineer
Hulu, LLC
My Blogs
هذا الموضوع مغلق.
