0

データベースから受け取った情報に基づいて主に動的に生成されるASP.NET Webフォームページがあります。コントロールはUpdatePanelに注入されます。 1つのコントロールには、ユーザーがコントロール内のボタンをクリックしたときに実行されるjavascript関数が含まれていることを除けば、ほとんどすべてが機能しています。このコントロールはテストページでは完全に機能しますが、この動的に作成されたページ内で使用すると、ブラウザを介したページソースインスペクションが存在することを示すにもかかわらず、JSコンソールエラーが返されます。そのコントロールがページに挿入された後、クロム開発者用ツールコンソールから関数を実行しようとすると、同じエラーが発生します。どのようにして機能を実行可能にしますか?それは以下のように見えるハイレベル/擬似コードで動的に追加された内部の更新コントロールパネル内のユーザーコントロール内のJavaScript関数

<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

ための背後にあるコードだから、それはそうのための後ろ動的に注入されたコントロールのようにjavascを登録しないDOMへのスクリプト。 ScriptManager.RegisterClientScriptBlockを使ってjavascript関数全体を登録することで、JSがコントロールのHTML部分の中に生きていて、コードの背後には存在していないと感じているので、回避したいと思っていた機能です。誰かがもっと良い方法を知っているなら、私に知らせてください。

関連する問題