2

テーマを使用して asp.net アプリを構築しています。Web 構成を使用してアプリにテーマを割り当てました。

ページに使用したいブックマーク アイコンがテーマ ディレクトリにありますが、ヘッダーのリンク タグからテーマの場所を参照するのに問題があります。

まず、リンク タグの href 要素内にコード ブロックを挿入しようとしましたが、うまくいきませんでした。代わりに、<% 文字を html エンコードしてブラウザに直接出力するだけでした。

<link rel="shortcut icon" href="/App_Themes/<%=Page.Theme %>/images/bookmark.ico" type="image/x-icon" runat="server"/>

hr タグの要素内にコード ブロックを配置することはできますが、リンク タグでは機能しない理由がわかりません。

<hr test="<%=Page.Theme %>"/>  

次に、head タグ内で Response.Write を実行しようとしましたが、コントロールにコード ブロックが含まれているため、Controls コレクションを変更できないというエラーが表示されました。

<% Response.Write("<link rel=\"shortcut icon\" href=\"/App_Themes/" + Page.Theme + "/images/bookmark.ico\" type=\"image/x-icon\"/>"); %>

文字列リテラルだけでも試してみましたが、同じエラーが発生しました。

<%= "<link rel=\"shortcut icon\" href=\"/App_Themes/" + Page.StyleSheetTheme + "/images/bookmark.ico\" type=\"image/x-icon\"/>" %>

リンクタグ内のテーマディレクトリから何かを参照する方法はありますか?

ASP.NET 2 と ASP.NET 2 MVC アプリの両方でこれを実行しようとしています。

4

6 に答える 6

1

スクリプトをいくつかのサーバー要素でラップすることにより、インライン コードを取り除くことができます。

<head runat="server">
   <title>My Test App <title>
   <div runat="server">
      <link rel="shortcut icon" href="/App_Themes/<%=Page.Theme %>/images/bookmark.ico" type="image/x-icon" runat="server"/>
   </div>
</head>
于 2012-04-16T20:07:45.867 に答える
1

ジェレミー

次のような html ヘルパーを作成してみてください。

public static string SetThemeIcon(this HtmlHelper html, string themename)
{
    var filePath = VirtualPathUtility.ToAbsolute("~/App_Themes/" + themename + "/images/bookmark.ico");
    return "<link rel=\"shortcut icon\" href=\"" + filePath + "\" type=\"image/x-icon\"/>";
}

次に、ビューまたはマスター ページで、次のように参照します。

<%= Html.SetThemeIcon("test") %>

または上記の場合のように(mvcで):

<%= Html.SetThemeIcon(String.IsNullOrEmpty(Page.Theme) ? Page.StyleSheetTheme : Page.Theme) %>

お役に立てれば...

ジム

于 2010-02-02T09:06:48.470 に答える
1

runat="server"としてマークしたため、これは機能しません

代わりにこれを試してください

<link rel="shortcut icon" href="<%=ResolveUrl(string.Format("~/App_Themes/{0}/images/bookmark.ico", Page.Theme)) %>" type="image/x-icon"/>
于 2010-02-01T18:38:57.327 に答える
0

これを行うこともできます:

<head>
    <style type="text/css">
        @import "<%= ResolveUrl("~/content/styles.css") %>";
        @import "<%= ResolveUrl("~/content/print.css") %>" print;
    </style>
</head>
于 2012-06-26T08:47:52.670 に答える
0

わかりました、インラインコードを使用して動作させました。インライン コードは私の最初の選択肢ではありませんが、mvc でも機能するソリューションが必要でした。これが私が思いついたものです:

<head runat="server">
    <title>My Test App <title>
    <script language="CS" runat="server">
        void Page_Load(object sender, System.EventArgs e) 
        {
            string sTheme = String.IsNullOrEmpty(Page.Theme) ? Page.StyleSheetTheme : Page.Theme;
            litFacIcon.Text = "<link rel=\"shortcut icon\" href=\"/App_Themes/" + sTheme + "/images/bookmark.ico\" type=\"image/x-icon\"/>";
        } 
    </script>
    <asp:Literal ID="litFacIcon" runat="server"></asp:Literal>
</head>
于 2010-02-01T16:19:04.007 に答える