سؤال

إذا كان لدي جزء بسيط من البيانات لتخزينها (عدد صحيح أو سلسلة على سبيل المثال)، فقد أختار تخزينها في ViewState، أو باستخدام عنصر تحكم HiddenField.

لماذا أختار واحدا على الآخر؟

حالة العرض

  • من الصعب على المستخدم فك التشفير (يعتقد أنه ليس مستحيلاً)، وهو ما قد يكون مرغوبًا فيه

حقل مخفي

  • يمكن استخدام القيمة في JavaScript

هل هناك إيجابيات وسلبيات أخرى؟

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

المحلول

ليس حقًا، يتم تخزين ViewState فعليًا في حقل مخفي، لذا فإن الاختلاف الحقيقي الوحيد هو التشفير.

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

نصائح أخرى

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

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

يتم تخزين حالة العرض في الصفحة نفسها لذا فهي تزيد من حجم الصفحة وقد تسبب ذلك قضايا الأداء.

كما يمكننا تكوين التطبيق ل حفظ حالة العرض على الخادم وليس على الصفحة نفسها والتي قد تحمي من بعض المشكلات الأمنية.

جوميت

الحقل المخفي غير مرئي على الصفحة ويمكن عرض قيمه في مصدر العرض ولكن قيمة حالة العرض مشفرة وغير قابلة للقراءة.

يتم نشر قيمة الحقل المخفية في الصفحة التالية.(ملحوظة:استخدم server.transfer للحصول على قيمة الحقول المخفية).

تعتبر حالة العرض جيدة فقط على الصفحة التي تتواجد فيها أو تقوم بالنشر فيها مرة أخرى.باستخدام الحقل المخفي، يمكنك الوصول إلى البيانات الموجودة في الصفحة التالية التي تنتقل إليها (بالإضافة إلى البيانات الأخرى) باستخدام طريقة PreviousPage لكائن الصفحة كما يلي:

string term = ((TextBox)Page.PreviousPage.FindControl("txtSearchTerm")).Text;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top