2011-01-14 83 views
2

我試圖擴展ScriptManager以簡化處理具有多個資源文件(例如多個腳本文件以及css)的資源。目標是我可以添加一個ScriptReferenceScripts,並讓它加載多個與該參考名稱相關的資源。ScriptManager,頁面,靜態方法...我如何獲得當前沒有頁面的ScriptManager?

我遇到的問題是,在使用不包含Page參數的靜態方法時,您的基本ScriptManager如何知道如何處理這些內容?例如:

ScriptManager.ScriptResourceMapping.AddDefinition("someName", new 
    ScriptResourceDefinition { Path="/script/somescript.js"}); 

無論活動腳本管理器是在您調用它時運行的頁面,它都會添加一個定義(我猜)。但與老派方法不同,例如RegisterClientScriptBlock,沒有傳遞參數來標識頁面。但是這個東西必須存儲在ScriptManager對象中,不是嗎?那麼它是如何知道的?

我總是可以得到有效一個與此引用:

ScriptManager.GetCurrent(page);

,但理想情況下,我會創建工作酷似微軟的新方法。我不知道如何實現像

ScriptManager.ScriptResourceMapping.AddDefinition(string name, 
    ScriptResourceDefinition definition, 
    ResourceType type) 

可以找出對象實例添加到東西,而不必添加一個頁面參數。不知何故,他們正在做...我怎麼能?

+0

爲什麼你試圖從腳本管理器去,而不是創建一個簡單的處理程序,並通過你自己讀取文件,做你的代碼相同的工作,你可以完全控制它們。 (縮小它們,清除它們等) – Aristos 2011-01-14 21:46:47

+0

我已經有了類似的東西,這就是我如何在這裏結束的。但我真的想將它與ScriptManager集成在一起,因爲它具有一些非常有用的功能(比如確定哪個版本用於調試/發佈,CDN等),所以我沒有理由重新發明所有功能。 – 2011-01-14 21:52:18

回答

8

即使在靜態上下文中,您也可以通過(Page)(HttpContext.Current.Handler)獲得頁面引用。

相關問題