Ссылка на значок из внутренней папки с использованием главной страницы и тем ASP.Net - PullRequest
2 голосов
/ 15 января 2012

У меня следующая ситуация на моей новой странице ASP.Net:

  • Я использую главную страницу
  • Я использую темы
  • У меня есть страницы в отдельных папках

Мне нужно сослаться на значок из моей главной страницы на основе текущей темы.

К сожалению, путь ~ App_Themes / Basic / Images / favicon.ico преобразуется в http://example.com/folder/App_Themes/Basic/Images/favicon.ico.

Как я могу единообразно обратиться к моему favicon.ico, расположенному в пути App_Themes / Basic / Images / favicon.ico от главной страницы, используемой следующими по-разному расположенными страницами:

  • ~ / Home.aspx
  • ~ / Secure / Dashboard.aspx
  • ~ / счета / Login.aspx

1 Ответ

4 голосов
/ 16 января 2012

Обычно темы ASP.NET ограничиваются файлами скинов и CSS-файлами со всеми изображениями, на которые есть ссылки из CSS-файла.В этом сценарии пути к изображениям являются относительными из файла CSS.

Если вам нужен путь к файлу внутри папки текущей темы относительно страницы, вы можете использовать свойство Page.Theme в сочетании с Page.ResolveUrl () method:

<%= Page.ResolveUrl(String.Format("~/App_Themes/{0}/Images/favicon.ico", Page.Theme)) %>

Если вы хотите использовать это в элементе <link rel="shortcut icon">, вы можете просто поместить приведенный выше код в атрибут href.Если у вас нет <head runat="server">, в этом случае ASP.NET может выдать HttpException:

Невозможно изменить коллекцию Controls, поскольку элемент управления содержит блоки кода (т. Е. <% ...%>).

Это можно исправить, поместив элемент <link> в элемент управления <asp:PlaceHolder>:

<head runat="server">
  <asp:PlaceHolder runat="server">
    <link rel="shortcut icon" href="<%= ... %>" />
  </asp:PlaceHolder>
</head>
...