14

テーマディレクトリから画像を取得するにはどうすればよいですか (私のテーマは変更されるため、直接参照したくありません) これは可能であると確信していますが、見つけたすべての例が機能していないようです。それらは通常、次のようなものです。

asp:image ID="Image1" runat="server" ImageUrl="~/Web/Mode1.jpg" /

ここで、Web はテーマ フォルダーのサブ ディレクトリになります。実行時にテーマ ディレクトリが追加されることを示唆しています。

4

4 に答える 4

19

テーマ フォルダー内の画像を参照する場合は、SkinId を使用することをお勧めします。各テーマ フォルダのスキン ファイル内で、次のように定義します。

<asp:Image runat="server" SkinId="HomeImage" ImageUrl="Images/HomeImage.gif" />

コードで画像を使用するときは、次のようにします...

<asp:Image runat="server" SkinId="HomeImage" />

アプリケーションが選択したテーマに応じて、正しいテーマ フォルダから正しい画像が選択されます。

MyWebSite
  App_Themes
    Theme1
      Default.skin
      Default.css
      Images
         HomeImage.gif
    Theme2
      Default.skin
      Default.css
      Images
         HomeImage.gif

これは、テーマ、スキンの使用方法、およびテーマをいくつかの異なる方法で設定する方法を説明する優れた記事です。

于 2008-10-14T12:52:08.377 に答える
2

他の誰かがこの質問に対する洞察を持っていますか?

別のオプションは、ベースページを拡張することです。現在のテーマに基づいて画像のパスを返す関数を追加しました。

MyBasePage.vb

Private strThemePath As String = ""
Private strThemedImagePath As String = ""

Public Function ThemedImage(ByVal ImageName As String) As String
    Return Me.strThemedImagePath & ImageName
End Function

Private Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit  
    Me.strThemePath = "App_Themes/" & Me.Theme & "/"
    Me.strThemedImagePath = Me.strThemePath & "Images/"
End Sub

MyPage.aspx

<img src='<%= Me.ThemedImage("Loading_wait.gif") %>'> 
于 2008-10-23T16:46:14.110 に答える
0

きっともっと簡単な方法があるはずですか?たとえば、HyperLink コントロールを作成し、そのイメージを指定したいのですが、そのイメージがテーマにある場合、どうすればよいですか? アプリ全体のテーマを web.config (例: <page theme="MyTheme">) から制御したいのですが、サイト内のすべてのアイテムにテーマを指定する必要はありません。

編集:私は自分の質問にちょっと答えました。私はスキンファイルにこのコントロールを作成します:

<asp:Hyperlink runat="Server" SkinId="HyperlinkOne"
ImageUrl="Images/one.png" Text="One" NavigateUrl="~/PageOne.aspx"/>

次に、私のコードでこれを行うだけです:

HyperLink hl = new HyperLink();
hl.SkinID = "HyperlinkOne";
于 2008-12-01T09:10:14.327 に答える
0

あなたの質問を正しく理解できたかどうかはわかりませんが、次のようなスキン ファイルに画像がある場合、それはデフォルトでテーマ フォルダから取得されます。

<asp:Image runat="server" ImageUrl="filename.ext" />

テーマ フォルダーのサブフォルダー Web から取得する場合は、相対パスを使用します。

<asp:Image runat="server" ImageUrl="Web/filename.ext" />

この例では、アプリケーションのルート ディレクトリのサブフォルダーを指定しています。

<asp:image ID="Image1" runat="server" ImageUrl="~/Web/Mode1.jpg"/> 

テーマとスキンに関する MSDN ページを参照してください。

于 2008-10-14T11:55:01.393 に答える