目前正在做的四川移動項目中遇到了一個小小的問題母版頁引用的腳本的相對路徑該怎麼寫
起因對於這個相對路徑是對於母版頁還是對於內容頁答案是內容頁(母版頁只是替換內容頁)這樣就遇到了一個問題:當內容頁和母版頁不在同一個目錄下的時候並且內容頁也分別放在不同的文件夾下的時候不同的內容頁對於腳本引用的相對路徑就有所不同
提出問題關於母版頁MasterPage中引用JavaScriptCSS的問題如果所有套用模板的頁面都在同一個路徑下這個問題就不存在了但是在實際中為了方面管理往往會建立一些文件夾將引用的MasterPage放到不同的文件夾下這是在MasterPage引用的JSCSS文件由於路徑的問題在套用母版頁中的內容頁面中不一定都能訪問到那這個問題該如何解決了
解決問題通過自己的努力思考和網上的參考資料得到一些解決辦法
方法一
string JSFile = 〈script language=\javascript\ src=\{}\ type=\text/javascript\>〈/script>;
ResponseWrite(stringFormat(JSFileResolveUrl(~/Javascript/jqueryjs)));
這個方法雖然可以快速解決問題但是ResponseWrite是將腳本的引用寫到了Html頁面的開頭這就破壞了XHTML的格式會帶來各種存在的隱患據資料用 AJAX開發發現很多 AJaxControlToolkit中很多控件不起作用了後來發現說是由於ResponseWrite引起的結果
方法二
string JSFile = 〈script language=\javascript\ src=\{}\ type=\text/javascript\>〈/script>;
PageHeaderInnerHtml = stringFormat(JSFileResolveUrl(~/Javascript/jqueryjs))
這種方法就可以實現而且可以很好的解決方法中的問題
方法三
HtmlLink link = new HtmlLink();
linkHref = stringFormat(JSFileResolveUrl(~/CSS/basecss));
linkAttributes[rel] = stylesheet; linkAttributes[type] = text/css;
pageHeaderControlsAdd(link);
這是注冊樣式的一種方法
方法四注冊客戶端腳本的方法結合ASPNET AJAX 中的ScriptManager控件來實現
用ScriptManager這是 AjaxConrolToolkit的一個控件通過這個控件愛你可以很好的動態的根據所引用母版頁的腳本路徑自動的把母版頁中引用的相對於母版頁中的路徑轉換成相對於所引用內容頁的相對路徑
用法如下 前提條件裝了環境中的組件才能用〈asp:ScriptManager>還用注意一點這個控件還需要給程序指定一個資源的腳本文件是在SystemwebExtensions中的所以需要
From:http://tw.wingwit.com/Article/program/net/201311/11551.html