Использование корневого пути - это хорошо, если вы всегда знаете, что ваш сайт будет установлен в корневой каталог, но это нереально и не рекомендуется.
Было бы неплохо, если бы мы могли использовать префикс относительного пути на стороне сервера ~ / для тега ..., но, как вы знаете, это не пользовательский элемент управления, поэтому он просто передается клиенту как есть. Ниже приведен трюк, позволяющий вам указать ~ / относительный путь для блока сценариев на стороне клиента.
Я, по сути, использую класс VirtualPathUtility и защищенный метод в коде позади страницы, главной страницы или элемента управления, и он очень хорошо работает для меня.
Вот метод:
protected string GetPageRelativePath(string targetPath)
{
return VirtualPathUtility.MakeRelative( Request.AppRelativeCurrentExecutionFilePath, targetPath );
}
А вот как вы можете использовать префикс ~ / в блоке скрипта:
<script type="text/javascript" src='<%=GetPageRelativePath("~/Scripts/MyScript.js") %>'></script>
По сути, вы можете использовать это с другими путями src, даже путями к изображениям или файлам Flash.
Надеюсь, это поможет.