这是 VB 代码:
Dim button As New Button
Dim xpanel As New Panel
button.Text = "Submit"
button.ID = "button"
button.Height = "40"
button.Attributes.Add("Autopostback", "true")
button.Attributes.Add("Onclick", "Submit_Click") <----commented
button.Attributes.Add("RunAt", "server")
Dim trigger As New AsyncPostBackTrigger()
trigger.ControlID = "button"
trigger.EventName = "Submit_Click"
AddHandler button.Click, AddressOf Submit_Click
xpanel.Controls.Add(button)
Dim literalx As New Literal
submitplaceholder.Controls.Add(literalx)
submitplaceholder.Controls.Add(xpanel)
设置是:从 updatepanel 内部,单击一个按钮,该按钮会在页面底部的隐藏按钮上触发 javascript(thatbutton.onclick 函数),然后依次在 ajaxtoolkit 上执行“单击”: ModalPopupExtender ,导致弹出一个模式窗口,该窗口是使用上面的按钮动态填充在 page_load 上的(以及其他信息,但这对此并不重要)。 到目前为止,还没有回发。
现在我们已经单击了该页面的按钮。我希望它回发并调用函数 Submit_Click。我不关心该函数实际被调用的是什么,并且我知道 _Click 是保留的,但尽管如此:它会触发该函数,但总是会出错,从而导致不良行为。
有些事情不对劲,我一生都想不出还有什么可以尝试的。使用 OnClick 属性然后使其自动回发似乎不适用于动态填充控件。 有什么想法吗?
最佳答案
button.Attributes 是 HTML 属性的集合,因此不会按您想要的方式工作。
试试这个:
button.UseSubmitBehavior = True
AddHandler button.Click, AddressOf Submit_Click
而不是
button.Attributes.Add("Autopostback", "true")
button.Attributes.Add("Onclick", "Submit_Click") <----commented
button.Attributes.Add("RunAt", "server")
关于Javascript 调用 VB 回发函数导致意外的调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12982810/