2017-10-15 4 views
0

は、私は次のコードRegisterStartupScriptは初めて実行されます。 ASP.NET C#のJavaScript

<asp:Panel runat="server" ID="ImagePanel"> 
    <asp:UpdatePanel runat="server" ID="ImageUpdatePanel" UpdateMode="Conditional"><ContentTemplate>  
     <img id="photo" src="/Icons/Factory Layout.png" style="display: none;"/> 
     <script type="text/javascript"> 
      function ResetImage(typeOfImage) { 
       var factoryImage = $("#photo"); 
       if (typeOfImage === 1) { 
        factoryImage.attr("src",document.getElementById('<%= FactoryImageFileNameHF.ClientID %>').value); 
       } 
       else if (typeOfImage === 2) { 
        factoryImage.attr("src",document.getElementById('<%= IncidentFactoryImageFileNameHF.ClientID %>').value); 
       } 

それは私が背後にあるコードで次のコードを実行しようとしていますResetImage javascript機能であると.aspxページを持っています。

if (typeOfMap == 1) 
{ 
    FactoryImageFileNameHF.Value = fileNameOfFactoryImage.FileFullPath(); 
    ClientScript.RegisterStartupScript(Page.GetType(), "test" + ScriptKeyHF.Value, "ResetImage(1);", true); 
    ScriptKeyHF.Value = (ScriptKeyHF.Value.ToInt() + 1).ToString(); 
} 
else if (typeOfMap == 2) 
{ 
     IncidentFactoryImageFileNameHF.Value = fileNameOfFactoryImage.FileFullPath(); 
     ClientScript.RegisterStartupScript(Page.GetType(), "test" + ScriptKeyHF.Value, "ResetImage(2);", true); 
     ScriptKeyHF.Value = (ScriptKeyHF.Value.ToInt() + 1).ToString(); 
    } 

問題は、私はRegisterStartUpScriptに呼び出していますResetImage()メソッドは、ブラウザ上で初めて実行されることです。ポストバックの2回目と3回目は実行されません。 私はを試しましたが、javascriptコードがある前に実行されています。コードが初めて実行される理由は誰にも分かりません。

+0

質問に不足している詳細があります。起動スクリプトを登録するコードはいつ呼び出されますか?各ポストバックで呼び出されていますか?必要な条件( 'typeOfMap'は1または2に等しい)は真ですか? –

+0

@Scott Hannenスタートアップスクリプトを登録するコードはボタンクリックであり、私たちが想定できるtypeOfMapは1です。ブレークポイントでヒットしたことを確認できます(つまり、RegisterStartupScriptがヒットします)。また、初めてボタンがクリックされると(つまり、RegisterStartupScriptがヒットします)、javascriptのメソッドも実行されますが、次回はボタンがクリックされるとjavascriptメソッドがヒットしません。 –

答えて

0

溶液は、私が代わりのScriptManagerのClientScriptManager(ClientScript)を使用したので、私は

System.Web.UI.ScriptManager.RegisterStartupScript(this.Page,Page.GetType(), "test" + ScriptKeyHF.Value, "ResetImage(1);", true); 

にコードの行を変更し、それが動作することです。

マスターページにScriptManagerがあり、私のコードは子ページにありました

関連する問題