Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新面板中动态添加的用户控件中的Javascript函数未定义_Javascript_Jquery_Asp.net_Updatepanel_Dynamic Usercontrols - Fatal编程技术网

更新面板中动态添加的用户控件中的Javascript函数未定义

更新面板中动态添加的用户控件中的Javascript函数未定义,javascript,jquery,asp.net,updatepanel,dynamic-usercontrols,Javascript,Jquery,Asp.net,Updatepanel,Dynamic Usercontrols,我有一个ASP.NETWebForms页面,它主要是根据从数据库收到的信息动态生成的。这些控件被注入到UpdatePanel中。在大多数情况下,一切都正常工作,除了一个控件包含一个javascript函数,该函数在用户单击控件内的按钮时执行。该控件在测试页面上工作得很好,但是当在这个动态创建的页面中使用时,单击该按钮会返回一个JS控制台错误,表示该函数未定义,即使通过浏览器进行的页面源代码检查显示该函数存在。在将控件注入页面后,尝试通过chrome developer tools控制台执行该功能

我有一个ASP.NETWebForms页面,它主要是根据从数据库收到的信息动态生成的。这些控件被注入到UpdatePanel中。在大多数情况下,一切都正常工作,除了一个控件包含一个javascript函数,该函数在用户单击控件内的按钮时执行。该控件在测试页面上工作得很好,但是当在这个动态创建的页面中使用时,单击该按钮会返回一个JS控制台错误,表示该函数未定义,即使通过浏览器进行的页面源代码检查显示该函数存在。在将控件注入页面后,尝试通过chrome developer tools控制台执行该功能也会出现相同的错误。如何使函数可供执行

在高级/伪代码中,它如下所示:

<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>
DocumentSubmissionControl的代码隐藏

Page_Load
Attachments.JSSubmitButton.OnClientClick = Attachments.SubmitFileJSFunctionName
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

因此,动态注入控件似乎没有将javascript注册到DOM。我通过使用ScriptManager.RegisterClientScriptBlock来注册整个javascript函数,这是我希望避免的,因为我觉得JS应该存在于控件的HTML部分中,而不是隐藏的代码中。如果有人知道更好的方法,请告诉我