區別 在編寫ASP程式的時候,通常都會用到<!--#include virtual/file="path/filename"-->把一段相對獨立的檔案代碼嵌套到當前頁面中來。在實際的使用中很多人對"file"和"virtual"的使用不太理解,導致頁面執行的時候會出現錯誤。現就該問題作一個簡述。
使用"file"的時候,等號後面使用的是相對路徑。所謂相對路徑,是以當前檔案所在的檔案夾作為始點,通過路徑搜尋,得到其它檔案(或檔案夾)與當前檔案的路徑關係。使用"virtual"的時候,等號後面使用的是絕對路徑。絕對路徑,是以網站根目錄作為始點,通過路徑搜尋,得到檔案(或檔案夾)的完整路徑。
這兩個定義不太好理解,舉例說明:IIS設定的網站根目錄為"c:\wwwroot\",a.asp檔案所在目錄是c:\wwwroot\afolder,b.asp檔案所在目錄是c:\wwwroot\bfolder,c.asp檔案所在目錄是c:\wwwroot\afolder\cfolder,則以a.asp作為起點尋找b.asp,所經過的路徑依次為c:\wwwroot\afolder、c:\wwwroot、c:\wwwroot\bfolder;而尋找c.asp,所經過的路徑就是c:\wwwroot\afolder、c:\wwwroot\afolder\cfolder。由此得出,b.asp對於a.asp的相對路徑就是../bfolder;相同的,a.asp對於b.asp的相對路徑就是../afolder。當a.asp檔案需要使用"file"調用b.asp檔案的時候,其語句就應該寫為<!--#include file="../bfolder/b.asp"-->。調用c.asp,其語句是<!--#include file="cfolder/c.asp"-->。而無論什麼時候,a.asp、b.asp、c.asp這三個檔案的絕對路徑分別是c:\wwwroot\afolder、c:\wwwroot\bfolder、c:\wwwroot\bfolder\cfolder。因此,在a.asp檔案中使用"virtual"調用另外兩個檔案,分別為<!--#include virtual="/bfolder/b.asp"-->和<!--#include virutal="/bfolder/cfolder/c.asp"-->。
另外需要提一下的是include與iframe的區別。前者是把一個相對獨立的檔案代碼作為調用檔案代碼的一部分執行,該語句屬於ASP語言,只能用於asp檔案中。而iframe是單純把一個獨立的檔案在調用檔案中嵌套顯示,兩者是完全獨立的,無任何關係,且iframe屬於HTML語言,可在asp、htm、html等檔案中調用。