4

今、困っています。まず、ページがあります。それを「http://blah.com/login」と呼びましょう。

それは明らかに「index.asp」に直結します

Main.aspの行:

<!--#include file="resource/menu.asp"-->

ページトップには、メニューに必要なものがすべて含まれています...だから:

resource / menu.htmの一部:

<div id="colortab" class="ddcolortabs">
<ul>
<li><a href="main.asp" title="Main" rel="dropmain"><span>Main</span></a></li>

..。

</ul>
</div>
<!--Main drop down menu -->
<div id="dropmain" class="dropmenudiv_a">
<a href="main/announcements.asp">Announcements</a>
<a href="main/contacts.asp">Contact Information</a>
<a href="main/MeetingPlans.asp">Meeting Plan</a>
<a href="main/photos.asp">Photo Gallery</a>
<a href="main/events.asp">Upcoming Events</a>
</div>

「お知らせ」(http://blah.com/login/main/announcements.asp)リンクをクリックしたとしましょう...今、お知らせページにいます!しかし、待ってください、私は同じメニューファイルを含めます。何が起こるかを推測します:「http://blah.com/login/main/main/announcements.aspこれは存在しません...

私の解決策:すべてのサブページにmenu_sub.aspインクルードを作成します。しかし、ちょっと待ってください...これは機能しますが、本当に本当に面倒になります...「menu_sub.asp」の代わりに1つのメインの「menu.asp」だけを使用するにはどうすればよいですか?「/main/announcements.asp」の使用はオプションではありません。これは、サーバーごとに異なるディレクトリに配置されるWebアプリケーションであるためです。

4

5 に答える 5

3

この関数をmenu.aspに追加します。

    Function GetApplicationPath()
        GetApplicationPath = Mid(Request.ServerVariables("APPL_MD_PATH"), Len(Request.ServerVariables("INSTANCE_META_PATH")) + 6) & "/"
    End Function

    Dim prefix: prefix = GetApplicationPath()

次に、以下を使用してmenu.aspで参照を構成します。

<a href="<%=prefix%>main/announcements.asp">Announcements</a>  

これにより、これらの参照は絶対的になりますが、WebサイトにASPアプリケーションがインストールされている仮想フォルダーパスによって適切に異なります。

于 2012-04-15T17:24:54.790 に答える
3

特効薬はありません。これが私がこれを行う方法です。

  1. info.aspと呼ばれるグローバル変数をDIMおよび初期化する別のインクルードファイルを作成します
  2. info.asp DIM内で、strRelativePathという変数を「」に初期化します。
  3. menu.aspincludeの上の各aspページの上部にinfo.aspを含めます。
  4. menu.aspを変更し、すべてのURLに<%= strRelativePath%>を含めます
  5. 各aspページ内で、必要に応じてstrRelativePathを設定します。

<!--#include file="includes/info.asp"-->
strRelativePath = "Login/"
<!--#include file="resource/menu.asp"-->
于 2012-04-16T14:13:52.590 に答える
1

ここに同様の質問があり、最高評価の回答は、次の関数でルートを見つけることができると述べています。

Function ToRootedVirtual(relativePath)
    Dim applicationMetaPath : applicationMetaPath = Request.ServerVariables("APPL_MD_PATH")
    Dim instanceMetaPath : instanceMetaPath = Request.ServerVariables("INSTANCE_META_PATH")
    Dim rootPath : rootPath = Mid(applicationMetaPath, Len(instanceMetaPath) + Len("/ROOT/"))
    ToRootedVirtual = rootPath + relativePath
End Function

その後、それを呼び出すことができます:

ToRootedVirtual("/")

また

ToRootedVirtual("/index.asp")

など、サーバーからルートを返します。

于 2013-07-28T09:15:59.733 に答える
0

のように相対パスではなく、ルートディレクトリからの絶対パスを受け入れるため、Virtualの代わりにを使用できます。FileVirtualFile

このような:

  <!--#INCLUDE VIRTUAL="/resource/menu.asp"-->

また、IIS設定でインクルードが許可されていることを確認してください。詳細については、次のリンクを参照してください:http: //tech.mikeal.com/blog1.php/server-side-includes-for-html-in-iis7

于 2012-04-15T06:43:46.637 に答える
0

これは、HTMLベースタグで修正できます。

各ページの先頭に次のタグを追加します。

<base href="http://blah.com/login">
于 2013-03-10T18:23:49.060 に答える