Относительный путь для включаемого файла - ASP / HTML - PullRequest
0 голосов
/ 23 марта 2012

Извините, если на этот вопрос ответили где-то еще, но я попытался найти несколько страниц, но безуспешно.

Итак, у меня есть включаемый файл (боковая панель), который я использую на всех страницах.

Default.asp
Products.asp
Salary/Survey.asp
inc/sidebar.asp (this is the included file)

сейчас внутри sidebar.asp У меня есть ссылка для Salary/Survey.asp

со всех других страниц на корневом уровне, я могу просто использовать href='Salary/Survey.asp' и будет работать нормально. но когда я нахожусь на странице Survey.asp, написание href='Salary/Survey.asp' станет на самом деле Salary/Salary/Survey.asp. Я понимаю, что это должно быть ../Salary/Survey.asp для правильного использования, но тогда оно не будет работать для страниц корневого уровня.

Я не могу использовать root relative, то есть /Default.asp и /Salary/Survey.asp, так как я работаю на чужой проект, и я не знаю его структуру каталогов, поэтому у меня есть только опция document relative path.

Надеюсь, это понятно, и кто-то мне поможет.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 31 марта 2012

Мы решили эту проблему следующим образом ...

  1. Каждая из наших страниц asp содержала специальный файл, который Dims и устанавливает глобальные переменные . Мы назвали наши Info.asp
  2. Внутри Info.asp мы определили переменную с именем strRelativePath
    Dim strRelativePath
    strRelativePath = ""
  3. На каждой странице asp задается относительный путь в соответствии с его относительным положением:

например:

  • Корневые страницы - strRelativePath = ""
  • Глубокие страницы на один уровень - strRelativePath = "../"
  • Двухуровневые страницы - strRelativePath = "../../"

Тогда нужно было предварительно указать все ссылки, требующие относительного пути, с помощью <% = <strong>strRelativePath %>

1 голос
/ 31 марта 2012
you need to get write this after the that - Salary/Survey.asp
You can get the virtual path to the file from one of several server variables - try either:

Request.ServerVariables("PATH_INFO")
Request.ServerVariables("SCRIPT_NAME")

Любая переменная сервера предоставит вам виртуальный путь, включая любые подкаталоги и имя файла - в вашем примере вы получите /virtual_directory/subdirectory/file.asp. Если вам просто нужен виртуальный каталог, вам нужно будет удалить все после второй косой черты, используя любой метод, который вы предпочитаете для извлечения каталога из пути, например:

s = Request.ServerVariables("SCRIPT_NAME")
i = InStr(2, s, "/")
If i > 0 Then
    s = Left(s, i - 1)
End If
or:

s = "/" & Split(Request.ServerVariables("SCRIPT_NAME"), "/")(1)
0 голосов
/ 23 марта 2012

В основном, если ваша боковая панель может быть включена из программ в разных папках, единственный «простой» способ - использовать абсолютные пути, как вы упомянули.различных способов ...

  • виртуальные папки: в IIS вы можете установить виртуальную папку в папке зарплаты для «зарплаты» и указать ее в корне сайта.
  • OS ссылки (аналогично выше, но на уровне OS)
  • использовать mappath.Вы можете проверить mappath, чтобы увидеть фактическую папку, в которой вы находитесь, и использовать правильное включение (с / без / salary), хотя я думаю, что это может привести к ошибке, не уверен.
...