将自定义ascx属性应用于基础html

时间:2014-10-09 17:13:32

标签: c# asp.net .net

我已经看过:Custom attribute in UserControl (*.ascx)?但它并没有解决我正在进行的工作。

假设我有一个控件

<MyTag:MyWrappingWidget runat="server" />

包装了一个asp:TextBox。我希望能够应用许多自定义属性(例如,用于Google分析)

<MyTag:MyWrappingWidget runat="server" data-mycustom-category="My Category" data-mycustom-action="click" data-mycustom-value="1" data-mycustom-label="My Label"/>

并将它们应用于基础输入框 - 因此可供Javascript处理。

<input type="text" data-mycustom-category="My Category" data-mycustom-action="click" data-mycustom-value="1" data-mycustom-label="My Label"/>

将这些属性应用于asp:TextBox但不会将其应用于包装它的控件时,这可以正常工作。我需要做什么才能使包装控件以相同的方式工作?

注意:向MyWrappingWidget添加许多属性无法解决问题。这些&#34;上下文感知&#34;属性只会与他们使用的页面相关。如果控件用于其他上下文,我们需要使用不同的属性集。争论这个设计超出了这个问题的范围..我只需要让它工作。

1 个答案:

答案 0 :(得分:0)

在你的控件的Page_Load中输入:

    Dim keys As IEnumerator = Me.Attributes.Keys.GetEnumerator()

    While keys.MoveNext

        Dim key As String = keys.Current.ToString

        If key.Contains("data-") Then

            TextBox1.Attributes.Add(key, Me.Attributes(key))

        End If

    End While