سؤال

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

في طريقة عرض الأخطاء هذه، لدي عنصر تحكم تسمية asp.net الذي يعرض رسائل الخطأ.عادة ما تعمل التسمية بشكل جيد، ولكن في بعض الحالات القليلة تكون التسمية فارغة، مما يعرض NullReferenceException.لقد تعاملت الآن مع هذه الحالة عن طريق التحقق مما إذا كانت التسمية فارغة قبل استخدامها، ولكن لا يزال سؤالي هو:

لماذا هذه التسمية فارغة؟ما هي الظروف التي يمكن أن تولد هذا؟

يحرر: لدي في الصفحة الرئيسية طريقة تسمى SetErrorText تأخذ سلسلة وتحدد التسمية.أقوم باستدعاء هذه الطريقة من طريقة Page_Load الخاصة بصفحات المحتوى، ويعمل هذا بشكل جيد بشكل عام.في جميع الحالات باستثناء حالتين (التي اكتشفتها حتى الآن) تتم تهيئة التسمية، ولا شيء يفصل هاتين الحالتين عن كل الحالات التي تعمل.

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

عندما يتم تحميل Page_Load لصفحة المحتوى، يجب ملء الصفحة الرئيسية.

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

المحلول

ويبدو أن المشكلة كانت مشكلة الارتباك.لقد نسي شخص ما حذف عناصر التحكم في المحتوى التي تم إنشاؤها تلقائيًا والتي يطرحها Visual Studio على جميع صفحات المحتوى حيث تحتوي الصفحة الرئيسية على عنصر تحكم ContentPlaceHolder.

إذا كانت صفحة المحتوى تحتوي على عنصر تحكم في المحتوى، فإن جميع عناصر التحكم التي تم وضعها في عنصر تحكم ContentPlaceHolder على الصفحة الرئيسية ستكون فارغة، على ما يبدو.

نصائح أخرى

ما هي الطريقة الموجودة على الصفحة الرئيسية التي يمكنك من خلالها الوصول إلى التسمية؟اعتمادًا على مرحلة دورة حياة الصفحة، ربما لم يتم تحميل عنصر تحكم التسمية بعد

هل يمكن الوصول إليه قبل إنشائه؟التحقق من دورة حياة الصفحة: http://msdn.microsoft.com/en-us/library/ms178472.aspx

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

كيف تجبر Visual Studio على إعادة إنشاء ملفات .designer لملفات aspx/ascx؟

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