我在新的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:
答案 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>