2013-12-22 31 views
3

我有這樣的ScriptManager在我的母版頁定義:如何以編程方式向腳本集合中添加已定義的ScriptResourceMapping?

<asp:ScriptManager runat="server"> 
     <Scripts> 
      <asp:ScriptReference Name="jquery" /> 
      <asp:ScriptReference Name="bootstrap" /> 
      <asp:ScriptReference Name="respond" /> 
     </Scripts> 
    </asp:ScriptManager> 

我也有這個ScriptResourceMapping在我BundleConfig.cs定義:

 ScriptManager.ScriptResourceMapping.AddDefinition("respond", 
      new ScriptResourceDefinition { 
       Path = "~/Scripts/respond.min.js", 
       DebugPath = "~/Scripts/respond.js" 
      }); 

     ScriptManager.ScriptResourceMapping.AddDefinition("jcrop", 
      new ScriptResourceDefinition { 
       Path = "~/Scripts/jquery.jcrop.min.js", 
       DebugPath = "~/Scripts/jquery.jcrop.js" 
      }); 

我可以看到「響應」映射加載罰款。

現在我需要的「jcrop」映射只在特定頁面上加載,從而,IL該頁面我添加的頁面加載事件:

 ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("jcrop")); 
     ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("~/Scripts/picturecrop.js")); 

我可以看到picturecrop.js腳本加載,但jcrop映射簡單地被忽略。 沒有錯誤也沒有影響。如果我將映射更改爲顯式路徑,它可以正常工作,但我無法利用Path/DebugPath區分。

我錯過了什麼能夠以編程方式使用我定義的ScriptResourceMapping?

謝謝。

回答

3

我沒有這兩種方式這兩者似乎工作:

ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("jcrop", null)); 

這一次我覺得作品,因爲如果你看一下兩個構造來ScriptReference的一個參數的構造函數有一個參數命名path並在兩參數構造函數,它們是nameassembly。所以我認爲你的問題在於它期待着一條完整的道路,而你只是給它一個名字。

的另一種方式我做它是:

ScriptManager.RegisterNamedClientScriptResource(Page, "jcrop"); 

這似乎也工作得很好。我希望這有幫助!

相關問題