次のようにaspxで記述します。
<link type="text/css" href='/theme<%=theme%>/top.css' rel="stylesheet" />
しかし、結果は次のとおりです。
<link type="text/css" href="/theme<%=theme%>/top.css" rel="stylesheet" />
驚くべきことに、js での使用は問題ありません。
次のようにaspxで記述します。
<link type="text/css" href='/theme<%=theme%>/top.css' rel="stylesheet" />
しかし、結果は次のとおりです。
<link type="text/css" href="/theme<%=theme%>/top.css" rel="stylesheet" />
驚くべきことに、js での使用は問題ありません。
これは、runat server でlink
あるタグ内にあるためです。<head>
ヘッドタグは「スマート」です。<link>
タグを検出すると、アプリケーションの相対パス構文 ~/ を実際に使用できます。したがって、( head タグ内で) 実行する場合:
<link href="~/Content/Site.css" rel="stylesheet" />
runat サーバーとはどこにも書いていませんが、実際に機能することがわかります (つまり、チルダがサイトの適切な場所に展開されます)。もちろん、欠点は、それをしたくない場合です。:) おそらく最も簡単な解決策は、次のように手動でタグを作成することです。
<%= "<link type=\"text/css\" href='/theme" + theme + "/top.css' rel=\"stylesheet\" />" %>
式を使用することはできません<head runat="server">
。代わりに、Page_Load イベントに次のコードを記述して挿入する必要があります。<link/>
HtmlLink link = new HtmlLink();
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "Stylesheet");
link.Attributes.Add("href", "/theme" + theme + "/top.css");
Header.Controls.Add(link);