我似乎找不到与我遇到的问题有关的任何东西。
目标
我试图从单击按钮时在代码隐藏中创建的按钮(Web控件)获取自定义数据属性的值。我引用的是MSDN-Attribute.GetCustomAttribute Method,但不确定是否适合我要尝试的操作。
我当前的单击子位于下面,但不起作用。
Default.ascx
<asp:UpdatePanel ID="itemWrapper" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:PlaceHolder ID="itemsPlaceholder" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
Default.ascx.vb(隐藏代码)
Protected Sub Items_Load()
Dim dynamicID = "13"
Dim itemBtn = New Button()
itemBtn.Attributes.Add("data-custom-id", dynamicID) '<- Custom attribute I want to get
itemBtn.UseSubmitBehavior = False
itemBtn.Text = "select"
itemBtn.ID = "Button_" & dynamicID
AddHandler itemBtn.Click, AddressOf ItemSelectBtn_Click
itemsPlaceholder.Controls.Add(itemBtn)
End Sub
Public Sub ItemSelectBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim clickedBtn = DirectCast(sender, Button),
clickedBtnID As String = clickedBtn.Attributes("data-custom-id")
Console.WriteLine("this button's ID is " & clickedBtnID)
End Sub
HTML输出
<div id="Content_C001_itemWrapper">
<input type="button"
name="ctl00$Content$C001$1"
value="select"
onclick="target = '_blank';__doPostBack('ctl00$Content$C001$1','')"
data-custom-id="13">
</div>
更新
这是最简单的答案。不确定为什么这不起作用,但是正如@zgood建议获取属性。 VB.NET使用Attributes("attribute-name")
,而不像C#中那样使用Attributes["attribute-name"]
。仅供参考。
感谢您的帮助!