包含其他文件 利用服務端的INCLUDE命令可以很容易的在Active Server Pages中包含其他文件。這種服務端INCLUDE命令不需要在腳本中實現,它完全可以作為HTML代碼的一部分。 <HTML> <HEAD><TITLE>歡迎</TITLE></HEAD> <BODY> <!--#INCLUDE VIRTUAL=“mybanner.inc” --> 歡迎進入! </BODY> </HTML> 在這個例子中。文件mybanner.inc將被插入到這個ASP文件<BODY>標記下面,當這個ASP文件執行時,在mybanner.inc中的HTML代碼以及腳本也將在相應位置執行或出現。(其實和子程序差不多,只不過沒有參數傳遞) 這種文件包含有兩種途徑,虛擬路徑或者物理真實路徑。下面是后者的示例: <HTML> <HEAD><TITLE>歡迎</TITLE></HEAD> <BODY> <!--#INCLUDE FILE=“mybanner.inc” --> 歡迎進入! </BODY> </HTML> 如果你使用FILE命令來指定物理路徑,那么文件必須在當前目錄或者子目錄下面。本例子中,文件在當前目錄下,這樣限制就比較多,因此,一般你應當使用虛擬路徑命令。 這種文件包容對于任何拓展名都是有效的,一般來說,習慣上用.inc的后綴,但是只要你高興 .asp、.htm、.html或者任何其他的后綴都是可以的。 注:當你改變了包含的文件時,并不一定馬上就看到效果,那是因為IIS的緩存,IIS在對正常文件變動的響應要迅捷于對包含文件變動的響應。 在這種場合下,有兩種方法處理,一方面是在Internet Service Manager中重新啟動一下Server。或者,將包含其他文件的母文件也做一下改動,例如添加一個無意義的空格,那么IIS就會意識到這種變動并且作出正確響應,不過,如果包含變動文件的母文件較多,顯然這就成了耗時耗力的工作。 在兩種場合下一般需要包含其他文件,一種是有一些十分通用的常用程序段或者腳本,不需要每個ASP文件都寫一遍,那么完全可以在每個需要的ASP文件中進行包含就行了(可省了不少勁兒:P)。 另外一種是進行判斷后根據條件重定向的場合,例如上面小節的例子,完全也可以利用include語句實現。例如看下面這段例子: <% IF Request.Form(“Username”)=“” THEN %> <!--#INCLUDE VIRTUAL=“regester.asp”> <% Response.End END IF %> <HTML> <HEAD><TITLE>注冊結果</TITLE></HEAD> <BODY> 謝謝您、<%=Request.Form(“UserName”)%>的注冊! </BODY> </HTML> 這個例子說明它可以和Response.Redirect方法具有同樣的作用,當用戶沒有填寫姓名時,會被引導回注冊主頁,不過,由于這個語句的執行完全在服務端完成,因此基本上不存在瀏覽器的兼容性問題。 還有很重要的一點必須注意的是,在IIS中對INCLUDE語句的執行是優先于腳本執行的,也就是說,如果把INCLUDE語句放在腳本外面并等待腳本結果來傳遞參數那么將是行不通的。例如下面這個例子: <% IF Request.Form(“Username”)=“” THEN Myinlcude=“register.asp” ELSE Myinclude=“Homepage.asp” END IF %> <!--#INCLUDE VIRTUAL=“<%=MyInclude%>“ --> 這個腳本就是錯誤的,因為在IIS中先執行INCLUDE語句而后才是VB腳本的執行。這樣,文件”<%=MyInclude%>“自然找不到.
|