如果你堅持使用ASP經典,你可能會發現處理的母版一樣的功能有些方法卻是,據我所知,沒有框架suppoerted這樣。
[編輯]鑑於原題的方法首先證明的編輯也不是那麼有趣,所以我建議的替代方法了。
你可以做一個普通的ASP頁面,其服務於所有網站的流量。一個查詢參數然後指定應該顯示哪個子頁面。子頁面由獨立的ASP頁面構成,由普通頁面或母版頁面或其他子頁面執行。這方面的一個非常粗略的例子看起來是這樣的:
<%
url = Request.QueryString("url") & ""
if url = "/" or url = "" then
subpage = "home.asp"
else
subpage = url & ".asp"
end if
%>
<!DOCTYPE html>
<html>
<head>
<title>Header for all pages</title>
<link rel="stylesheet" href="/css/site.css" />
</head>
<body>
<% Server.Execute(subpage) %>
</body>
</html>
該網站應該再以這種方式來解決:
www.domain.com/default.asp?url=/contact
這將在contact.asp子頁面加載到母版或:
www.domain.com/default.asp?url=/user/1234/profile
加載用戶的profilepage(由輪廓顯示。asp在文件夾user/1234)。這最後一個例子引發了一些問題,因爲那時每個用戶都必須有一個包含所有asp文件的文件夾(這是遠遠不夠理想的),所以你可能需要對url查詢參數進行一些解釋,以更智能的方式重定向輸入。
另一個問題是,子頁面是ASP頁面本身,這意味着有人可以直接引用它們。這需要採取一些行動來保護這些子頁面免於直接引用。它可以做到,但這可能意味着包括一些代碼=>回到原點!
這種方法的另一個缺點是子頁面在其自己的上下文中呈現,因此無法從調用頁面的上下文訪問功能和數據。這意味着全局數據必須以其他方式共享(會話,應用程序,數據庫或其他方式)。數據不能傳遞到子頁面(並且不,Server.Execute不允許查詢參數)。
將包括單向
我個人認爲您使用頁眉/頁腳包括作爲證明我原來的職位,並顯示如下得到了最大的靈活性。
一種方法是將你的一般東西放入包含中,然後在每個ASP頁面上包含這些位。例如: -
<!-- #include virtual="/includes/header.asp" -->
content goes here
<!-- #include virtual="/includes/footer.asp" -->
而且你header.asp可能是這個樣子:
<!DOCTYPE html>
<html>
<head>
<title>Header for all pages</title>
<link rel="stylesheet" href="/css/site.css" />
</head>
<body>
和footer.asp像這樣:
</body>
</html>
這一策略也有一些缺點。標頭相當靜態,可能會帶來一些SEO問題;對於其中一個,標題應該適合include包含標題標記時很難完成的pagecontent。這可能是由那些之前包括段即設置一些全局變量來簡化:
<%
title = "Title for this page's content"
%>
<!-- #include virtual="/includes/header.asp" -->
content goes here
<!-- #include virtual="/includes/footer.asp" -->
在頭部像這樣
<!DOCTYPE html>
<html>
<head>
<title><%=title%></title>
<link rel="stylesheet" href="/css/site.css" />
</head>
<body>
,然後,但已經開始「聞」了一點因爲你對包含文件中的包含頁面設置了一些期望。至少在構建頁面時你必須非常自律。
是否有任何理由特別說明您爲什麼選擇將新網站(以及您自己的個人傾向)用於過時的技術? ASP Classic在10年前不再流行,並且不受支持(至少它不會再發展)。如果你想做綠地開發,你應該看看ASP.NET :-) –
我目前正在使用asp vbscript編寫的舊網頁上工作,所以爲了更加熟悉我決定的語言和用法使我的網站如此。我知道經典的ASP是過時的...我與.Net框架的日期,所以即時通訊不關心學習asp.net,因爲我已經寫了C#和知道大量的類/方法。我想,即將到來的是,這是一種學習體驗。 – hijinxbassist
夠公平的。我不確定你的技能水平,所以如果你進入編程行業,我會建議你從其他地方開始......只要你知道你在做什麼就行了,我猜:-) –