将自定义ascx属性应用于底层html

本文关键字:html 应用于 属性 自定义 ascx | 更新日期: 2023-09-27 18:26:02

我看到了:UserControl(*.ascx)中的自定义属性?但它并没有解决我正在处理的场景。

假设我有一个控制

<MyTag:MyWrappingWidget runat="server" />

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

<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添加一些属性并不能解决问题。这些"上下文感知"属性只在它们所使用的页面上具有相关性。如果控件在另一个上下文上使用,我们需要使用一组不同的属性。认为设计超出了这个问题的范围。。我只需要让它发挥作用

将自定义ascx属性应用于底层html

在控件的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