2014年3月27日 星期四

在主版頁面中引用javascript 相對路徑的問題

Relative path issue when importing javascript in master pages

在我的某個主版頁面引入jQuery檔案時,莫名其妙的無法載入。
有以下這段話:
Master pages inherit the path of the page that includes them, so the relative path to the jquery .js file is different, for different pages.
解釋 : 主版頁的真實出現的地方其實是使用主版頁的該頁面。概念應該是內容頁「引用」 了主版頁面,而不是「裝進」了主版頁。換言之,實際上是以內容頁為主體。(用中斷點實驗可以得知,是先載入Page然後才載入Master)

做了實驗,修改相對路徑之後就可以載入了,似乎就是這麼回事。

實際案例

資料夾結構如下,有中括號的代表資料夾
  • [ Master ]
    • Admin.master
  • [ Pages ]
    • [ Admin_pages ]
      • abc.aspx
  • [ Scripts ]
    • jquery-2.1.0.js

假設abc.aspx使用Admin.master作為他的主版頁面。我現在要在Admin.master裡面引入jquery,直覺是這樣 <script   src="../Scripts/jquery-2.1.0.js"   type="text/javascript"></script>

因為[Scripts]資料夾是相對於Admin.master的上一層。但是開啟abc.aspx時就會錯誤,因為[Scripts]資料夾是相對於abc.aspx的上二層,若要正確必須要改成這樣

<script   src="../../Scripts/jquery-2.1.0.js"   type="text/javascript"></script>


如果用下面這種方法似乎就一勞永逸。
<script  src='<%= ResolveUrl("~/Scripts/jquery-2.1.0.js")%>'   type="text/javascript"></script>

不過這行放在<head></head>裡面又會有別的錯,(無法修改 Controls 集合,因為控制項包含程式碼區塊... ...)  目前還懶得研究。

沒有留言:

張貼留言

跟我說說話吧!