2012-01-15 7 views
2

I持って私の新しいASP.Netページで、次のような状況:参照ファビコン

  • 私は私がテーマ
  • を使用していたマスターページ
  • を使用しています
  • 私は別のフォルダにページがあります

現在のテーマに基づいて私のマスターページからfaviconを参照する必要があります。

〜App_Themes/Basic/Images/favicon.icoパスはhttp://example.com/folder/App_Themes/Basic/Images/favicon.icoに解決されます。

どのように私は一様に、以下の異なった位置ページで使用マスターページからApp_Themes /ベーシック/画像/ favicon.icoをパスにあり、私のfavicon.icoを参照することができます。

  • 〜/ Home.aspx
  • 〜/セキュア/ Dashboard.aspx
  • 〜/アカウント/ Login.aspxの
+0

はなぜ例では、不幸なパスを解決しているのですか? –

答えて

4

通常ASP.NETのテーマは、CSSファイルから参照されているすべての画像とのスキンファイルとCSSファイルに限定されています。このシナリオでは、イメージへのパスはCSSファイルからの相対パスです。あなたがページから現在のテーマのフォルダの相対内のファイルへのパスが必要な場合

、あなたはPage.ResolveUrl()方法と組み合わせるPage.Themeプロパティを使用することができます:あなたは<link rel="shortcut icon">でそれを使用したい場合は

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

上記のコードをhref属性の内側に置くことができます。あなたはASP.NETがHttpExceptionがスローされる可能性があり、その場合には<head runat="server">、持っていない限り:

を制御 は、コードブロック(すなわち<% ...%>)が含まれているため、Controlsコレクションを変更することはできません。

これは<asp:PlaceHolder>コントロール内<link>要素を入れて固定することができる。

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

優秀で、詳細で、速い答え。どうもありがとうございました。 – Germstorm