我有一个 ASP.NET Webforms 页面,该页面主要是根据从数据库接收到的信息动态生成的。控件被注入到 UpdatePanel 中。在大多数情况下,一切正常,除了一个控件包含一个 javascript 函数,该函数在用户单击控件内的按钮时执行。该控件在测试页面上运行良好,但在此动态创建的页面中使用时,单击按钮会返回一个 JS 控制台错误,指出该函数“未定义”,即使通过浏览器进行的页面源检查显示它存在。在将该控件注入页面后尝试通过 chrome 开发人员工具控制台执行该功能会产生相同的错误。如何使该功能可以执行?
在高级/伪代码上,它如下所示:
<Page>
...
<DynamicWizardControl>
<UpdatePanel>
<!--dyanamically injected stuff-->
<WizardDocumentSubmissionControl>
<DocumentSubmissionControl ID="Attachments" runat="server">
<asp:Textbox ID='txtFile' runat='server'></asp:Textbox>
<asp:Button ID='btnAdd' runat='server' Text='Add File' />
<script>
function submitFile<%=btnAdd.ClientID%>() {
alert($('#<%=txtFile.ClientID%>').val());
}
</script>
</DocumentSubmissionControl>
</WizardDocumentSubmissionControl>
<!--End Dynamically Injected Stuff-->
</UpdatePanel>
</DynamicWizardControl>
</Page>
WizardDocumentSubmissionControl 的代码隐藏
Page_Load
Attachments.JSSubmitButton.OnClientClick = Attachments.SubmitFileJSFunctionName
DocumentSubmissionControl 的代码隐藏
Public ReadOnly Property SubmitFileJSFunctionName As String
Get
Return "submitFile" & btnAdd.ClientID
End Get
End Property
Public ReadOnly Property JSSubmitButton As Button
Get
Return btnAddJS
End Get
End Property