RouteHandler конфликтует с относительным путем - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть структура каталогов в моем проекте (что-то), похожее на это:

Root
  |
  |- Utilities
  |
  |- Modules
      |
      |- Admin

в папке администратора, у меня есть простая страница default.aspx и файл javascript validation.js

Я просто пытаюсь сослаться на этот файл на моей странице aspx как

<script src="validation.js" ...></script>

, так как я использую обработчики маршрутов, мой URL будет похож на этот шаблон

http://mysubdomain.mysite.com/admin/UserId/manage

(замените userid зашифрованной строкой triple des, и вы настроены)

, так как относительный путь используется для доступа к файлу js, когда я пытаюсь проверить firebug, он пытается получить доступ к файлу js с помощьюэтот путь:

http://mysubdomain.mysite.com/admin/UserId/manage/validation.js

конечно, его нет.единственный способ, который я вижу, это указать полный относительный путь

src="\modules\admin\validation.js"

, конечно, должен быть какой-то способ, которым я могу использовать эту проверку js без полного относительного пути.Как это получить?

спасибо.

ps: все это на странице .aspx, а не в коде (.cs)

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

У меня тоже была эта проблема, но я ничего не мог с этим поделать. Я обычно заканчиваю тем, что использую полный относительный путь, и если каталог меняется, мне приходится каждый раз менять его вручную Я не вижу другого способа сделать это.

Конечно, я бы хотел оказаться неправым.

0 голосов
/ 11 апреля 2011

Я думаю, что вы ищете тег HTML base.

Указание <base href="http://mysubdomain.mysite.com/modules/admin/" /> в элементе head перед любыми внешними ссылками заставит ссылки принимать http://mysubdomain.mysite.com/modules/admin/ в качестве путикорень.Чтобы использовать эту функцию на своем сайте, вы можете написать небольшой скрипт и включить его в свою главную страницу.

Я не тестировал его, но думаю, что-то вроде следующего должно работать.:

    public const string BASE_HREF_FORMAT = @"<base href=""http://{0}"" />";
    public static string GetBaseHref(HttpContext httpContext){
        var sv = httpContext.Request.ServerVariables;
        var sb = new StringBuilder();
        var serverName = sv["SERVER_NAME"];
        var path = sv["PATH_INFO"];
        if(path.Contains("/"))
        {
            path = path.Substring(0, path.LastIndexOf("/")+1);
        }
        return string.Format(BASE_HREF_FORMAT, path+serverName);
    } 

Документацию и учебное пособие можно найти по адресу: http://www.w3schools.com/tags/att_base_href.asp

...