تحديث الصفحة نص باستخدام عنصر تحكم مستخدم ويب

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

  •  02-07-2019
  •  | 
  •  

سؤال

أنا بناء التطبيق حيث صفحة تحميل عناصر تحكم المستخدم (x.ascx) بشكل حيوي استنادا إلى سلسلة الاستعلام.

يجب التحقق من صحة الملخص على صفحة تريد تحديث من عناصر تحكم المستخدم.هذا سوف تسمح لي عدة ضوابط استخدام التحقق من صحة واحدة موجزة.كيف يمكنني تمرير البيانات بين الضوابط و الصفحات.

وأنا أعلم أنني يمكن أن تحدد السيطرة في وقت التصميم و استخدام الأحداث أن تفعل ذلك ولكن هذه الضوابط يتم تحميلها بشكل حيوي باستخدام صفحة.LoadControl.

أريد أيضا تجنب استخدام دورات أو querystring.

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

المحلول

العثور على طريقة للقيام بذلك:

الخطوة 1:إنشاء قاعدة تحكم المستخدم وتحديد مندوبين و الأحداث في هذه السيطرة.

الخطوة 2:إنشاء وظيفة عمومية في قاعدة تحكم المستخدم لرفع الأحداث المحددة في الخطوة 1.

'SourceCode for Step 1 and Step 2
Public Delegate Sub UpdatePageHeaderHandler(ByVal PageHeading As String)
Public Class CommonUserControl
    Inherits System.Web.UI.UserControl

    Public Event UpdatePageHeaderEvent As UpdatePageHeaderHandler
    Public Sub UpdatePageHeader(ByVal PageHeadinga As String)
        RaiseEvent UpdatePageHeaderEvent(PageHeadinga)
    End Sub
End Class

الخطوة 3:ترث الويب الخاص بك تحكم المستخدم من قاعدة تحكم المستخدم الذي قمت بإنشائه في الخطوة 1.

الخطوة 4:من تحكم مستخدم ويب - دعوة MyBase.FunctionName التي قمت بتعريفها في Step2.

'SourceCode for Step 3 and Step 4
Partial Class DerievedUserControl
    Inherits CommonUserControl

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        MyBase.PageHeader("Test Header")
    End Sub
End Class

الخطوة 5:في الصفحة الخاصة بك, تحميل عنصر التحكم بشكل حيوي باستخدام صفحة.LoadControl ويلقي السيطرة على قاعدة تحكم المستخدم.

الخطوة 6:إرفاق معالجات الأحداث مع هذه السيطرة.

'SourceCode for Step 5 and Step 6
Private Sub LoadDynamicControl()
    Try
        'Try to load control
        Dim c As CommonUserControl = CType(LoadControl("/Common/Controls/Test.ascx", CommonUserControl))
        'Attach Event Handlers to the LoadedControl
        AddHandler c.UpdatePageHeaderEvent, AddressOf PageHeaders
        DynamicControlPlaceHolder.Controls.Add(c)
    Catch ex As Exception
        'Log Error
    End Try
End Sub

نصائح أخرى

على افتراض أنك تتحدث عن asp المصادقة الضوابط ، مما يجعلها العمل مع التحقق من صحة ملخص ينبغي أن يكون من السهل:استخدام التحقق من صحة نفس المجموعة.عادة لا تستمد كل usercontrols من قاعدة الطبقة أن يضيف ValidationGroup الممتلكات التي اضع يدعو تنقضها طريقة التغييرات الداخلية المصادقون على التحقق من صحة نفس المجموعة.

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

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