-1

ページ、スタイル シート、またはそれらへのリンクを ASP VBscript ページに自動的に含めるにはどうすればよいですか? 「グローバル」ページについて何か読んだことがありますが、それらが何を意味するのか、どのようにしてそのようなことを達成できるのかがわかりません。これは簡単な質問だと思いますが、2 日間 VBscript を書いているのでとても役に立ちます! 私も一般的に HTML の専門家ではありませんが、かなりよく理解していると感じています。「グローバル」ページが他の ASP ページとどのように連携するかについて、詳細な例を示していただければ幸いです。

私は最初のサイトをセットアップしています...後で構築する予定のメイン サイトの管理サイトです。公開サイトに進む前に、すべてのアヒルを一列に並べたい. これらのページ/リンク (ページ インクルード (ヘッダー/フッター)、スタイル シートなど) を、<!--#include file....作成する各ページで使用する必要なく、サイト全体に自動的に含める方法に関する詳細情報を教えてください。もっと簡単な方法があると確信しています。もしあれば、私はあなたが助けることができることを知っています! 事前に感謝します。どのようなオプションや可能性があるかを聞くのを楽しみにしています。

4

2 に答える 2

0

探している用語はグローバルページではなくマスターページです。そのため、Googleで探しているものを見つけるのに苦労している可能性があります。基本的に、マスターページをテンプレートと見なします。マスターページを作成してから、他のページをそのページにロードします。マスターに配置してから他のページに入力するコンテンツプレースホルダーがあります。

したがって、非常に基本的な例は次のようになります。

<%@ Master Language="VB" CodeFile="general.master.vb" Inherits="master1_general"%>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">
<link rel="stylesheet" type="text/css" href="/styles/main.css?v2"/>

<asp:ContentPlaceHolder id="head" runat="server">
</asp:ContentPlaceHolder>

</head>

<body>
<form id="form1" runat="server">
    <asp:ContentPlaceHolder id="body" runat="server">
    </asp:ContentPlaceHolder>
</form>
</body>
</html>

次に、個々のページは次のようになります。

<%@ Page Language="VB" MasterPageFile="~/master/general.master" AutoEventWireup="false" CodeFile="base.aspx.vb" Inherits="_Default" title="Opportunities" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">

//any additional head stuff specific to this page goes here.

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server" >

//your body mark up goes here.
</asp:Content>

マスターページが実際にはWebページであることに注意してください。次に、特定の場所にプレースホルダーがあります。これには、頭と体にプレースホルダーがあります。次に、個々のページで、使用するマスターページと、プレースホルダーに格納されるデータ(存在する場合)を特定します。特定のページに必要なjsまたはリソースをそのページにのみロードできるように、常にヘッドにプレースホルダーを含めます。

その場合、個々のページは、プレースホルダーに入るコンテンツにすぎません。

于 2012-10-28T10:17:32.600 に答える
0

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>

しかし、インクルードファイル内のインクルードページにいくつかの期待を設定したため、それはすでに少し「におい」を始めています。少なくとも、ページを作成するときは、非常に訓練されている必要があります。

于 2012-10-28T11:28:12.623 に答える