Вопрос

Я начал немного работать с мастер-страницами для сайта ASP.net mvc и столкнулся с вопросом.Когда я создаю ссылку в таблице стилей на главной странице, кажется, что путь к листу обновляется правильно.Это есть в коде, который у меня есть

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

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

<link href="Content/Site.css" rel="stylesheet" type="text/css" />

и это прекрасно.Однако тот же перевод пути, похоже, не работает для файлов сценариев.

<script src="../../Content/menu.js" type="text/javascript"></script>

просто получается одно и то же.Кажется, это все еще работает на странице верхнего уровня, но я подозреваю, что это просто браузер / веб-сервер, исправляющий мою ошибку.Есть ли способ сделать так, чтобы путь src тоже был глобализован?

Это было полезно?

Решение

<script src="<%= ResolveClientUrl("~/Content/menu.js") %>" type="text/javascript"></script>

Другие советы

Создайте метод расширения.Вот такой метод:

public static string ResolveUrl(this HtmlHelper helper, string virtualUrl)
{
    HttpContextBase ctx = helper.ViewContext.HttpContext;
    string result = virtualUrl;

    if (virtualUrl.StartsWith("~/"))
    {
        virtualUrl = virtualUrl.Remove(0, 2);

        //get the site root
        string siteRoot = ctx.Request.ApplicationPath;

        if (!siteRoot.EndsWith("/"))
            siteRoot += "/";

        result = siteRoot + virtualUrl;
    }
    return result;
}

Затем вы можете написать свой скрипт следующим образом:

<script type="text/javascript" src="<%= Html.ResolveUrl("~/Content/menu.js")%>"></script>

Используйте это вместо этого:

<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />

или вы можете использовать базовый тег в разделе HEAD страницы.Тогда все ваши ссылки относятся к местоположению, указанному в теге "base", и вам не нужно использовать ".. / .. /" и "~" прочее.За исключением ссылок в CSS-файлах (фоновый URL и т.д.), где ссылки расположены относительно расположения css-файла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top