使用ASP.Net母版页和主题从内部文件夹引用favicon

时间:2012-01-15 19:18:53

标签: asp.net themes master-pages favicon

我在新的ASP.Net页面上有以下情况:

  • 我正在使用母版页
  • 我正在使用主题
  • 我在不同的文件夹中有页面

我需要根据当前主题从我的母版页中引用一个favicon。

不幸的是,~App_Themes / Basic / Images / favicon.ico路径解析为http://example.com/folder/App_Themes/Basic/Images/favicon.ico

如何从以下不同位置页面使用的母版页中统一引用位于App_Themes / Basic / Images / favicon.ico路径中的favicon.ico:

  • 〜/ Home.aspx
  • 〜/安全/ Dashboard.aspx
  • 〜/账户/的Login.aspx

1 个答案:

答案 0 :(得分:4)

通常,ASP.NET主题仅限于皮肤文件和CSS文件,其中包含从CSS文件引用的所有图像。在那种情况下,图像的路径是相对于CSS文件的。

如果您需要相对于页面的当前主题文件夹内的文件路径,则可以使用Page.Theme属性与Page.ResolveUrl()方法结合使用:

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

如果要在<link rel="shortcut icon">元素中使用它,可以将上面的代码放在href属性中。除非你有一个<head runat="server">,否则ASP.NET可能抛出一个HttpException:

  

由于控件无法修改Controls集合   包含代码块(即&lt;%...%&gt;)。

可以通过将<link>元素放在<asp:PlaceHolder>控件中来解决此问题:

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