【发布时间】:2018-08-28 03:29:13
【问题描述】:
按照ASP.NET/HTML: HTML button's onClick property inside ASP.NET (.cs)的示例答案
如果我在页面上正常添加按钮 html,则按钮 "Click Me!" 可以工作。如果我使用 ASP.NET VB.NET InnerHTML 将其添加到页面,则不会触发单击。有谁知道为什么?
下面是呈现 HTML 之后的内容。
下面是 ASP.NET VB.NET 代码:
strTbl1 = "<table style='text-align:Left;'><tr class='spaceUnder'>"
strTbl1 = strTbl1 + "<td style=''><button id='Button1' OnServerClick='Button1_OnClick' runat='server'>Click me!</button></td></tr>"
strTbl1 = strTbl1 + "</table>"
Task1Assignees.InnerHtml = strTbl1
我尝试过<input type=button...、asp:Button .. 等,但都没有注册点击事件。如果我尝试使用 asp 类型,我也会收到 JavaScript 错误。
更新:
服务器端函数
Protected Sub Button1_OnClick(ByVal sender As Object, ByVal e As EventArgs)
MsgBox("hi")
End Sub
最终修复
所以使用来自Dynamic created Buttons VB.Net with Loop 的示例和下面接受的答案,我能够像这样修复我的代码
Page_Load(在 IsPostBack 检查之外)
Task1Assignees.Controls.Clear()
For j As Integer = 0 To System.Web.HttpContext.Current.Session("intAssignees") Step 1
Dim btn As New Button
btn.Text = "Mark Completed"
btn.CssClass = "btn btn-success"
btn.ID = "btnAssignee" & j
AddHandler btn.Click, AddressOf Send
Task1Assignees.Controls.Add(btn)
Next
按钮创建
System.Web.HttpContext.Current.Session("intAssignees") = ds1.Tables(0).Rows.Count
Task1Assignees.Controls.Clear()
For j As Integer = 0 To System.Web.HttpContext.Current.Session("intAssignees") Step 1
Dim btn As New Button
btn.Text = "Mark Completed"
btn.Cssclass = "btn btn-success"
btn.ID = "btnAssignee" & j
AddHandler btn.Click, AddressOf Send
Task1Assignees.Controls.Add(btn)
Next
按钮功能
Sub Send()
Response.Redirect("~\Home.aspx")
End Sub
【问题讨论】:
-
fyi...
onclick也不适用于所有场景 -
您不能通过在字符串中添加
OnServerClick和runat=server来创建动态按钮。您需要添加“真正的”控件。
标签: html asp.net vb.net button onclick