2011-08-11 29 views
0

我想設計一些控件,例如Menu,它們有自己的css和js文件。我也將存儲控制在單獨的目錄(讓我們說〜/控制)。如何在〜/ Controls/ControlName /目錄中「包含」js和css文件,然後從Web窗體中正確引用它們,請記住,aspx也可能位於某個目錄樹中?如何在ASP.NET用戶控件中存儲css和js

我向ascx文件添加了鏈接/腳本標記,但它們似乎相對工作,所以〜/ Default.aspx工作,而〜/ SomeFolder/Default.aspx不是。

當然,我可以添加所有引用的主頁/頁面,但我想知道是否有另一種解決方案?

在此先感謝

回答

1

你的CSS和JS文件路徑將需要相對於頁面的位置。

因此,如果頁面是坐在控制文件夾中,該文件也坐在控件文件夾中的文件會像這樣被引用:

<script type="text/javascript" src="scripts.js"></script> 
<link type="text/css" rel="Stylesheet" href="styles.css" /> 

但是,如果頁面坐在的根站點和控件中的文件的文件夾將引用文件,像這樣:

<script type="text/javascript" src="Controls/scripts.js"></script> 
<link type="text/css" rel="Stylesheet" href="Controls/styles.css" /> 

要解決的CSS和JS路徑使用下面的代碼在主或頁面:

<script type="text/javascript" src="<%= Page.ResolveUrl("~/Controls/scripts.js") %>"></script> 
<link type="text/css" rel="Stylesheet" href="<%= Page.ResolveUrl("~/Controls/styles.css") %>" /> 

實際上有幾種方法可用於解析url,具體取決於您是希望URL相對於站點根還是頁面本身。

請參見以下鏈接解釋:

Control.ResolveUrl versus Control.ResolveClientUrl versus VirtualPathUtility.ToAbsolute