質問

テーマディレクトリから画像を設定するにはどうすればよいですか(テーマは変更されているため、直接参照したくないため)。それらは通常、次の行に沿っています:

asp:image ID = <!> quot; Image1 <!> quot; runat = <!> quot; server <!> quot; ImageUrl = <!> quot;〜/ Web / Mode1.jpg <!> quot; /

ここで、Webは私のテーマフォルダ内のサブディレクトリになります。テーマディレクトリの提案は、実行時に追加されます。

役に立ちましたか?

解決

テーマフォルダ内の画像を参照する場合は、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

良い記事は、テーマ、スキンの使用方法、設定方法を説明しています。テーマにはいくつかの異なる方法があります。

他のヒント

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

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

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") %>'> 

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

<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ページを参照してください。

確かにもっと簡単な方法があるはずですか?たとえば、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";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top