صفحات رئيسية ، صفحات النماذج ، Form Runat = Server> جميع أساليب Onclick على الصفحة الرئيسية؟

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

سؤال

المشكلة التي أواجهها هي أن لدي صفحات رئيسية متعددة متداخلة:

  • المستوى 1: عالمي (رأس ، تذييل ، تسجيل الدخول ، التنقل ، إلخ ...)
  • المستوي 2: محدد (صفحات البحث ، صفحات الحساب ، إلخ ...)
  • مستوى 3: الصفحة نفسها

الآن ، نظرًا لأن نموذج واحد فقط يمكن أن يكون runat=server, ، أضع النموذج في Global Page (حتى أتمكن من التعامل مع أشياء مثل تسجيل الدخول ، والتعليقات ، وما إلى ذلك ...).

الآن مع هذا الحل ، يجب أن أضع أيضًا أساليب المستوى 3 (انظر أعلاه) ، مثل البحث أيضًا على صفحة المستوى 1 ، ولكن هذا سيؤدي إلى أن تكون هذه الصفحة ثقيلة (للتطوير) مع رمز من الجميع الأماكن ، حتى تلك التي يتم استخدامها في صفحة واحدة فقط (تغيير نموذج البريد الإلكتروني على سبيل المثال).

هل هناك أي طريقة لتفويض مثل هذه الطرق من onclick الأحداث (على سبيل المثال: ChangeEMail) من المستوى 1 (Masterpage العالمي) إلى المستوى 3 (الصفحة الواحدة نفسها).

أن أكون أكثر وضوحًا: لا أريد أن أحصل على هذه الطريقة ChangeEMail في رمز الصفحة الرئيسية العالمية وراءه ، ولكنه يرغب في "نقله" بطريقة ما إلى الصفحة الوحيدة التي ستستخدمها بالفعل. السبب في حاليًا هو أن يكون على الماجستير العالمي هو أن Global Master لديه form runat=server ويمكن أن يكون هناك واحد فقط من تلك صفحة ASPX.

بهذه الطريقة سيكون من الأسهل (أكثر منطقية) هيكل الرمز.

thnx (آمل أن أوضحت ذلك بشكل صحيح)

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

تعديل أيضا جزء من نفس الشيء ... من ناحية أخرى - كيفية الوصول إلى textbox1.text على سبيل المثال على صفحة المحتوى من الصفحة الرئيسية؟ أي أفضل ممارسة لهذا؟

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

المحلول

إذا وضعت زر البحث ومربع النص على .aspx نفسه (المستوى 3) ، فسيذهب معالج الحدث أيضًا في الصفحة (أو CodeBehind). لا يهم أن علامة النموذج موجودة على Masterpage العالمي (المستوى 1)

أما بالنسبة لسؤالك الثاني: يمكنك استخدام

var tb = this.FindControl("textbox1") as TextBox;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top