كيف يمكنك الوصول إلى Control.ViewState مع فئة التحكم الفرعية المضافة ديناميكيًا؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

لقد أنشأنا عنصر تحكم يحتاج إلى استمرار البيانات عبر خاصية ViewState لفئة التحكم.تتحكم الفئات الفرعية لفئتنا بشكل صارم للوصول إلى خاصية ViewState (وهي محمية في كائن الصفحة).نقوم بإضافة عنصر التحكم إلى Page.Controls في OnInit، ثم نحاول تعيين خاصية ViewState في OnPreLoad.

عندما نقوم بفك تشفير حالة عرض الصفحة وفحصها، فإن قيمنا لم يتم كتابتها، وبالتالي فهي غير متاحة لاسترجاعها لاحقًا.

هل يعرف أحد كيف يمكننا الحصول على سيطرتنا للمشاركة في عملية ViewState؟

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

المحلول

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

نصائح أخرى

حاول إنشاء عنصر التحكم الخاص بك في OnInit، ثم قم بإضافته إلى Page.Controls أثناء OnLoad.

لا يتم تحميل ViewState إلا بعد OnInit، ولكن قبل OnLoad.

فيما يلي مخطط تقريبي لدورة حياة الصفحة (جريج ماك) نشرت هذا ردًا على سؤال سابق لي.

  • تهيئة
  • LoadViewState
  • تحميل بيانات إعادة النشر
  • التحكم في المكالمات تحميل الأحداث
  • حدث تحميل المكالمة
  • أحداث التحكم في المكالمات
  • التحكم في العرض المسبق
  • العرض المسبق
  • SaveViewState
  • تفريغ

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