Pages

2010/12/13

ASP.NETにおけるチルダの扱い

ASP.NETのマスターページでは、チルダ(~)で自動的に相対パスを作ってくれる。
しかし、マスターページのコンテンツプレースホルダにチルダを使用すると無視されてしまう。
<asp:content contentplaceholderid="HeaderContents" id="Head" runat="server">
<link href="~/CSS/Common.css" rel="stylesheet" type="text/css"></link>
</asp:content>
確かに自動的に相対パスを取得するのだから、各ページで設定というのはよくわからないはなしになってくる。チルダはマスターページのテンプレートに対しては有効である。

ただ、スクリプトファイルのリンクを張る場合に使用する「Control.ResolveClientUrl」メソッド。
これを使うとちゃんと取得してくれる。
<link href="<%= this.ResolveClientUrl("~/CSS/Common.css") %>" rel="stylesheet" type="text/css" />
なかなか奥深い。
Related Posts Plugin for WordPress, Blogger...