DNN 5 - لا يمكن الحصول على الحالية ModuleId من تداخل المستخدم التحكم في وحدة مخصصة

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

سؤال

أنا أكتب مخصص وحدة DNN 5, وأنا بحاجة إلى "إدارة" الموجود على كل عنصر تحكم في النموذج.أنا خلق جديد UserControl ("ManagerLink") أن يرث من PortalModuleBase وضعت الرابط في أن تحكم ، وانخفض أن السيطرة على جميع الضوابط الرئيسية.

المشكلة هي أن ModuleId و TabId دائما -1 في "ManagerLink" متداخلة التحكم.PortalId يعمل على ما يرام, و يمكن أن يصبح TabId طريق القيام PortalSettings.ActiveTab.TabID.

  1. لماذا لا أستطيع الحصول على ModuleId و TabId من "ManagerLink" السيطرة, على الرغم من أنه يرث من PortalModuleBase?

  2. هل هناك طريقة بديلة للحصول على ModuleId (ما يعادل PortalSettings.ActiveTab.TabID)

تحديث 2014:

فقط رأيت إجابة أخرى هذه الطريقة أفضل من الأصلي (وتقبل منه).

إذا كنت تستخدم DNN 6 و في وقت سابق ، محل ModuleBase مع PortalModuleBase

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

المحلول

أردت فقط أن أضيف بلدي 2 سنتا هنا باستخدام جواب @الرومانية-م وتمتد على ذلك ،

كنت قادرا على القيام بذلك في متداخلة التحكم في نفسه مثل ذلك:

//fires first in the sequence, calling initialise components
override protected void OnInit(EventArgs e)
{
    InitializeComponent();
    base.OnInit(e);
}

private void InitializeComponent()
{
    this.Load += new System.EventHandler(this.Page_Load);
    //this binds a handler to the parent's init event
    this.Parent.Init += new EventHandler(this.Parent_Init);
}
//the handler gets called, at this point we can cast the parent as a module base
//and load the configuration and resource file into the nested control
private void Parent_Init(object sender, System.EventArgs e)
{
    this.ModuleConfiguration = ((ModuleBase)this.Parent).ModuleConfiguration;
    this.LocalResourceFile = ((ModuleBase)this.Parent).LocalResourceFile;
}

هذا يعني أنه في Page_Load حال متداخلة السيطرة عليه سوف يكون بالفعل التكوين و الموارد المحلية الملف في متناول اليد.

كما يعني أنك لم يكن لديك لتحميل التكوين و الموارد المحلية الملف على كل من الوالدين التحكم الذي يستخدم الطفل التحكم.

هذا سوف تعمل فقط عندما تكون الأم هي من نوع ModuleBase بالطبع

و أن تكون أكثر تحديدا ، وهذا يعمل في الإصدار 7.00.06

نصائح أخرى

وليام قطع من DNN المنتدى أجاب هذا واحد بالنسبة لي ، وأنا بعد الجواب هنا أيضا.

لأن الطفل التحكم يرث من PortalModuleBase, وأود أن تفعل التالية في معالج Page_Load مراقبة الوالدين

ملاحظة:ManagerLink يفترض أن يكون إشارة إلى الطفل التحكم

VB.NET:

With ManagerLink
    .ModuleConfiguration = Me.ModuleConfiguration
    .LocalResourceFile = Me.LocalResourceFile
End With
C#:
protected void Page_Load(System.Object sender, System.EventArgs e)
{
    ManagerLink.ModuleConfiguration = this.ModuleConfiguration;
    ManagerLink.LocalResourceFile = this.LocalResourceFile
}

أعلاه يسمح للطفل التحكم في استخدام الوالد ModuleConfiguration (والتي سوف تشمل ModuleId) و LocalResourceFile لأي التعريب.

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