2011-11-17 6 views
4

ASP.NETサイトでは、私はMasterページ上のScriptManagerコントロールを持っており、ScriptManagerProxyコントロールはすべての場所でコントロールしています。ほとんどの場合、私は<compositescript>ブロックを使用してスクリプトを1つのファイルに結合します。開発中のScriptManagerスクリプトの統合を無効にしますか?

Core.Master

<asp:scriptmanager id="ScriptManager1" runat="server" > 
    <compositescript> 
     <scripts> 
      <asp:scriptreference path="script1.js" /> 
      <asp:scriptreference path="script2.js" /> 
      ... etc ... 
     </scripts> 
    </compositescript> 
</asp:scriptmanager> 

サンプルコントロールやコンテンツページ

<asp:scriptmanagerproxy runat="server"> 
    <compositescript> 
     <scripts> 
      <asp:scriptreference path="script3.js" /> 
      <asp:scriptreference path="script4.js" /> 
      ... etc ... 
     </scripts> 
    </compositescript> 
</asp:scriptmanagerproxy> 

これは正常に動作しますが、効果のVisual Studioのクライアント側のデバッグツールを使用するために、私は」開発中にスクリプトを統合しないことをお勧めします。

私はthusly、<compositescripts>から<scripts>にすべてのスクリプトを移動しようとしました:

Private Sub ScriptManager1_PreRender(sender As Object, e As System.EventArgs) Handles ScriptManager1.PreRender 
     ' In development, don't combine scripts 
     If IsDevelopmentEnvironment() Then 
      For Each s As ScriptReference In ScriptManager1.CompositeScript.Scripts.Reverse 
       ScriptManager1.Scripts.Insert(0, s) 
      Next 
      ScriptManager1.CompositeScript.Scripts.Clear() 
     End If 
    End Sub 

これは、のScriptManager自体はスクリプトのために、魔法のように動作します。しかし、ScriptManagerProxyのさまざまなコントロールのスクリプトは表示されませんが、それらはまだ統合されています。デバッグ中は、繰り返し実行したいScriptManager1.Proxiesコレクションを見ることができますが、実際にはコードでアクセスできないように "Friend"です。

開発における統合を無効にすることは、かなり明白な要件のようです。これを行うためのもっと明白な方法がありますか?

+0

解決方法を見つけましたか? – Jacques

答えて

0

ScriptMode="Debug"とリリースは同じですか?

+0

いいえ、ScriptModeの設定方法に関係なく、まだ統合されます。 –