سؤال

ما هي الخيارات المتاحة لدي من أجل خلق جليل المحتوى الديناميكي في ASP.Net موقع على شبكة الإنترنت ؟

هنا هو بلدي السيناريو.لدي موقع يحتوي على عدة متداخلة المحتوى المناطق.أعلى مستوى الإجراءات مرتبطة مجال وظيفي Catalog, Subscriptions, Settings.

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

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


لقد بدأت مع UserControls.لقد عملت جيدا طالما ظللت تحميل كل شيء في الصفحة و لا تدع أحد تختفي.في أقرب وقت واحد اختفى ، ViewState الصفحة فجر لأن الرأي الدولة الشجرة كانت غير صالحة.

(لم أكن أريد أن تبقي تحميل الاشياء في صفحتي لأنني لا أريد الردود أن تكون ضخمة جدا)

إذا النهج القادم ليحل محل بلدي المناطق الحيوية مع IFrames.ثم بدلا من إنشاء مجموعة UserControl, أنا فقط تغيير المصدر في بلدي IFrame.منذ محتويات IFrames كانت صفحات مستقلة لم تصل الى أي ViewState المشاكل.

ولكن أنا قلقة من أن IFrames قد يكون سوء اختيار التصميم, لكن لا أفهم تماما لماذا.الموقع ليست عامة ، لذلك محركات البحث ليست مصدر قلق.


لذا أخيرا على سؤالي.

ما هي الخيارات المتاحة لهذا السيناريو ؟ إذا اخترت Ajax الحل (مسج) ، وسوف يكون للحفاظ على بلدي ViewState?هل هناك أي اعتبارات أخرى يجب أن تأخذ بعين الاعتبار ؟

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

المحلول

بعض الخيارات الأخرى:

  1. المحتوى فقط يظهر أن تكون ديناميكية.يمكنك تحميل ما يكفي من عناصر التحكم على الصفحة للتعامل مع أي شيء و إلا في الواقع تظهر ما تحتاجه.وهذا يوفر الكثير من المتاعب العبث مع رأي الدولة ، ولكن يعني الصفحة الخاصة بك لديها أكبر البصمة.
  2. إضافة عناصر إلى الصفحة بشكل حيوي.كنت قد تم بالفعل اللعب مع هذا ، حتى لقد رأيت بعض المسائل هنا.فقط تذكر أن مكان لخلق ديناميكية التحكم postbacks في Page_Init() الحدث, و إذا كنت تريد لها أن تكون جليل ، تحتاج إلى الحفاظ على تلك الدولة في مكان ما.أوصي قاعدة البيانات الخاصة بنا.

نصائح أخرى

الضوابط التي يتم إضافتها بشكل حيوي لا تستمر في viewstate, وهذا هو السبب في أنه لا يهم إذا كنت تستخدم AJAX أو نوافذ الأطر المدمجة أو أيا كان.

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

  1. تهيئة
    • LoadViewState
    • تحميل إعادة نشر البيانات
    • Call control تحميل الأحداث
    • استدعاء الحدث Load
    • دعوة السيطرة على الأحداث
    • التحكم في عرض مسبق
    • عرض مسبق
    • SaveViewState
    • تفريغ

ما يعنيه هذا هو المكان الوحيد إلى إعادة إضافة التحكم الديناميكي هو تهيئة -- على خلاف ذلك نشر البيانات (أو viewstate المعلومات) لم يتم تحميله في تلك السيطرة.ولكن في كثير من الأحيان ، لأن Viewstat/إعادة نشر البيانات ليست متاحة بعد في تهيئة الكود الخاص بك لا يملك معلومات فإنه يحتاج إلى معرفة الضوابط التي تحتاج إلى إضافة.

فقط العمل الأخرى في جميع أنحاء لقد وجدت في هذه الحالة هو استخدام 3rd الطرف التحكم يسمى DynamicControlsPlaceholder.هذا يعمل بشكل جيد جدا, و استمرت السيطرة المعلومات في viewstate.


في حالة معينة ، فإنه لا يبدو أن هناك العديد من الخيارات/الحالات.هل هو عملي فقط أن يكون جميع مجموعات مختلفة من عناصر التحكم في الصفحة ووضعها داخل asp:النائب التحكم ثم مجموعة واحدة مرئية ، اعتمادا على ما هو اختيار ؟

لديك عدد من الخيارات المختلفة ، نعم ، IFrames كانت سيئة اختيار التصميم.

الخيار الأول هو اياكس الحل.و مع ذلك لا يوجد viewstate السيناريو ، أنت تمرير البيانات ذهابا وإيابا مع خادم الويب ، بناء واجهة المستخدم على الطاير حسب الحاجة.

الخيار التالي هو حيوي إضافة الضوابط تحتاج لوظيفة معينة ، في كل مرة.الطريق هذا العمل ، هو أنه في بداية دورة حياة الصفحة, كنت بحاجة إلى إعادة إنشاء الصفحة تماما كما تم إرسال آخر الوقت ، ومن ثم تفريغ جميع لزوم لها ضوابط ، وبناء فقط تلك التي تريد.

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

أنا متأكد من إعطاء ما يكفي من الوقت, أنا يمكن أن تأتي مع أكثر من ذلك ، ولكن هذه 3 ظهرت للتو من قراءة المشكلة.

التحكم الديناميكي و viewstate لا تخلط جيدا, كما ذكر أعلاه - ولكن هذا هو شيء جيد, لأن حتى لو فعلوا viewstate على ديناميكية معقدة الصفحة سوف تحصل حتى المتضخمة هذا الأداء من شأنه أن يقلل إلى النيل

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

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