هل يمكنني استخدام ViewState للتخلص من الحاجة إلى تمرير سلسلة استعلام؟

StackOverflow https://stackoverflow.com/questions/1206492

  •  05-07-2019
  •  | 
  •  

سؤال

لدي صفحة تحتوي على عدة قوائم قابلة للتوسيع.في عالم مثالي، أرغب في عرض الروابط لكل قائمة من هذه القوائم، وعندما يتم النقر عليها، سيتم إعادة تحميل الصفحة مع عرض تلك القائمة المحددة.قرأت أن ViewState يمكن أن يلغي الحاجة إلى حقول الإدخال المخفية، وسلاسل الاستعلام، وما إلى ذلك، لكنني لست على دراية بهذا المفهوم.

في الأساس أحتاج إلى تحقيق شيئين:

  1. أضف معرف القائمة إلى ViewState obj عند النقر فوق الارتباط
  2. قراءة معرف من ViewState obj عند تحميل الصفحة، وعرض تلك القائمة

هل يمكن لأي شخص أن يقدم لي بعض الموارد و/أو المساعدة في هذا الموضوع؟شكرًا!

هل كانت مفيدة؟

المحلول

يعد ViewState في الأساس حقلًا مخفيًا طويلًا مشفرًا، يتم تخزينه في أعلى صفحتك.والفرق الرئيسي بين ذلك وبين الحقل المخفي العادي هو أن ASP .NET سيقوم بفك تشفيره وتحليله تلقائيًا عند إعادة النشر.

هناك طرق أفضل لتحقيق ما تريد القيام به.

  • يمكنك استخدام سلسلة الاستعلام.كل ما تقوم بتمريره هو معرف القائمة.قم بإلحاق معرف القائمة بنهاية الروابط الخاصة بك، وابحث عنه في Page_Load.قم بتحميل القائمة المناسبة إذا وجدتها.ستحتاج إلى التعامل مع الحالة التي لا يتم فيها تمرير معرف القائمة. سلسلة الاستعلام ليست شريرة.يمكن أن يساعد بشكل كبير في تقليل وزن الصفحة.عندما تستخدم مع لائق إعادة كتابة URL, ، يمكنك التحكم بشكل كبير في ما يتم تمريره (والأهم من ذلك، ما لا يتم تمريره)
  • إذا كنت تستخدم عناصر تحكم ASP .NET (مثل Button أو LinkButton) لتشغيل عرض القائمة، فيمكنك تعيين خاصية CommandArgument واختيار ذلك في رمز الحدث.يمكنك بعد ذلك تمرير هذا كمعلمة إلى أي طريقة أو عنصر تحكم يتعامل مع عرض قائمتك.

نصائح أخرى

يتم استخدام ViewState لتخزين المعلومات على صفحة واحدة بين عمليات النشر، وليس لتمرير الوسيطات بين الصفحات.

يمكنك تمرير الوسيطات بين الصفحات باستخدام:

  1. حصة
  2. سلسلة الاستعلام
  3. بسكويت
  4. قاعدة بيانات مخصصة
  5. عمليات إعادة النشر عبر الصفحات

لن تقوم أي من هذه الطرق بإضافة البيانات تلقائيًا إلى حالة العرض الخاصة بالصفحة المطلوبة.من بينها، أعتقد أن رقم 2 فقط يعمل مع روابط HTML المباشرة (GET)، أما الباقي عادةً ما يتضمن إعادة النشر (POST).

ستحتاج دائمًا إلى نوع من أداة ضبط ViewState (ViewState["Id"] = source.Id) في الصفحة المطلوبة.

كيف:تمرير القيم بين صفحات ويب ASP.NET

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top