2012-02-17 77 views
2

如果我寫一個ASCX控制,且該控制具有標記,需要CSS,以及CSS將只通過控制自身使用,是有一種優雅的方式(除了將它粘貼在ASCX文件本身中)以包含.css文件嗎?如何保持控制特有的CSS與控制代碼(ASP.NET)

理想情況下,我不得不control.ascx,control.ascx.cs,control.js和control.css所有作爲一個小 「包」。

它帶來了一個問題,一個關注至今:

問題:由於控制是在一個子目錄中,我不希望使用與knoweldge的CSS是一個子文件夾硬編碼的標籤。我想寫它,以便它相對於控制代碼(即:相同的文件夾),但仍在運行時找到。

關注:如果我這樣做了十管制,這是十次多服務器命中,我想。也許ScriptManager或RadScriptManager或RadStyleSheet管理器會神奇地聚合它們,但它對我來說不是一個showstopper。

如何解決相對路徑問題的任何想法?

+0

可以使用App_Themes文件夾,並在不同的.css文件的控制特定的CSS這裏。它們都將在運行時自動引用/鏈接,並且類/樣式將可用於您的html。我喜歡這讓我的樣式,因爲它使所有的CSS的在一個地方控制 - 方便玩「獵破式」(這是由那麼好玩的「其中到底是CSS」這個類)例如;-) – dash 2012-02-17 23:00:50

回答

0

要獲得樣式相對於的頁你的正確路徑,打電話給你的用戶控件的ResolveClientUrl方法,相對於樣式表的路徑傳遞到控制

HtmlLink link = new HtmlLink(); 
link.Href = this.ResolveClientUrl("control.css"); // same directory as the control 
link.Attributes["type"] = "text/css"; 
link.Attributes["rel"] = "stylesheet"; 
this.Page.Header.Controls.Add(link); 

雖然每個樣式表都會產生一個單獨的請求,您可以通過爲他們啓用內容到期來緩解問題。