ASPクラシックの使用を主張する場合、マスターページのような機能を処理する方法が見つかるかもしれませんが、私の知る限り、フレームワークによってサポートされているわけではありません。
[編集]元の質問の編集を考えると、最初に示した方法はそれほど面白くないので、別の方法も提案します。
サイトへのすべてのトラフィックを処理する一般的なASPページを作成できます。次に、queryparameterは、表示するサブページを指定します。サブページは、一般/マスターページまたは別のサブページによって実行される個別の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
ユーザーのプロファイルページをロードします(ユーザー/1234フォルダーのprofile.aspによって表示されます)。この最後の例では、すべてのユーザーがすべてのaspファイルを含むフォルダー(最適とはほど遠い)を持っている必要があるため、いくつかの問題が発生します。そのため、URLクエリパラメーターの解釈を使用して、よりインテリジェントな方法で入力をリダイレクトすることができます。
もう1つの問題は、サブページ自体がASPページであるという事実です。これは、誰かがサブページを直接参照できることを意味します。これには、これらのサブページを直接参照から保護するためのアクションが必要です。それは可能ですが、これはおそらくいくつかのコードを含めることを意味します=>正方形に戻る!
このアプローチのもう1つの欠点は、サブページが独自のコンテキストでレンダリングされるため、呼び出し元のページのコンテキストから機能やデータにアクセスできないことです。これは、グローバルデータを他の方法(セッション、アプリケーション、データベース、または他の方法)で共有する必要があることを意味します。データをサブページに渡すこともできません(いいえ、Server.Executeはクエリパラメーターを許可しません)。
インクルードウェイ
個人的には、私の元の投稿で示され、以下に示されているように、ヘッダー/フッターインクルードを使用することで最も柔軟性が得られると思います。
1つの方法は、一般的なものをインクルードに入れてから、各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に問題が発生する可能性があります。1つは、タイトルがページコンテンツに適合する必要があります。これは、インクルードにヘッダーマークアップが含まれている場合は実現が困難です。これは、include-sectionの前に設定されるいくつかのグローバル変数によって促進される可能性があります。
<%
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>
しかし、インクルードファイル内のインクルードページにいくつかの期待を設定したため、それはすでに少し「におい」を始めています。少なくとも、ページを作成するときは、非常に訓練されている必要があります。