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 集合,因為控制項包含程式碼區塊... ...) 目前還懶得研究。
沒有留言:
張貼留言
跟我說說話吧!