2017-12-26 22 views
0

데이터베이스에서받은 정보를 기반으로 주로 동적으로 생성되는 ASP.NET Webforms 페이지가 있습니다. 컨트롤은 UpdatePanel에 주입됩니다. 하나의 컨트롤에는 사용자가 컨트롤 내의 버튼을 클릭 할 때 실행되는 javascript 함수가 포함되어 있습니다. 이 컨트롤은 테스트 페이지에서 완벽하게 작동하지만이 동적으로 생성 된 페이지에서 사용할 때 버튼을 클릭하면 브라우저를 통한 페이지 소스 검사에서 "정의되지 않음"이라는 JS 콘솔 오류가 반환됩니다. 컨트롤이 페이지에 삽입 된 후에 크롬 개발자 도구 콘솔을 통해 함수를 실행하려고하면 동일한 오류가 발생합니다. 함수를 실행할 수있게하려면 어떻게해야합니까? 높은 수준의/의사에서동적 업데이트 된 사용자 정의 컨트롤 내부의 Javascript 함수가 정의되지 않았습니다.

IT는 다음과 같습니다

<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 

답변

0

에 대한 그래서 보인다 동적으로 삽입 된 컨트롤처럼 자바 스크립트를 등록하지 않습니다. DOM에 대한 ript. 나는 ScriptManager.RegisterClientScriptBlock을 사용하여 JS가 컨트롤의 HTML 부분 내에 있어야하며, 코드는 숨겨져 있지 않아야한다고 생각하기 때문에 피하려고하는 전체 자바 스크립트 함수를 등록해야한다. 누구든지 더 좋은 방법을 알고 있다면 알려주십시오.