2008-10-14 35 views
13

Làm cách nào để đặt hình ảnh đến từ thư mục chủ đề (chủ đề của tôi thay đổi nên tôi không muốn tham khảo trực tiếp) Tôi chắc chắn điều này là có thể, nhưng mọi ví dụ tôi thấy dường như không công việc. Họ thường dọc theo dòng:Hình ảnh chủ đề ASP.NET

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

nơi Web sẽ là một thư mục phụ trong tôi thư mục chủ đề. Đề xuất thư mục chủ đề sẽ được thêm vào khi chạy.

Trả lời

19

Nếu bạn muốn tham chiếu Hình ảnh trong thư mục Chủ đề của mình, thì tôi đề xuất sử dụng SkinId. Bên trong tập tin da của mỗi thư mục Theme bạn sẽ xác định một cái gì đó như thế này

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

Khi bạn đi đến sử dụng hình ảnh trong mã của bạn, bạn làm điều gì đó như thế này ...

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

Tùy theo chủ đề ứng dụng của bạn đã chọn nó sẽ nhận được hình ảnh chính xác từ thư mục Theme chính xác.

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

Giải thích cách sử dụng chủ đề, giao diện và đặt chủ đề theo nhiều cách khác nhau.

0

Không chắc chắn nếu tôi hiểu câu hỏi của bạn đúng, nhưng nếu bạn có một hình ảnh trong một file da, chẳng hạn như sau, nó sẽ đi theo mặc định từ thư mục chủ đề:

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

Nếu bạn muốn nó đến từ một Web thư mục con của thư mục chủ đề, sử dụng một đường dẫn tương đối:

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

dụ bạn chỉ định một thư mục con của thư mục gốc ứng dụng:

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

Xem the MSDN page on themes and skins.

2

Có ai khác có thông tin chi tiết về câu hỏi này không?

Một tùy chọn khác là mở rộng trang cơ sở. Tôi đã thêm một hàm sẽ trả về đường dẫn của hình ảnh dựa trên chủ đề hiện tại.

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

Phải có một cách dễ dàng hơn chắc chắn? Ví dụ, nếu tôi muốn tạo một điều khiển HyperLink, và tôi muốn chỉ định một hình ảnh cho nó, nhưng hình ảnh đó là trong một chủ đề, làm thế nào để làm điều đó? Tôi muốn chủ đề cho toàn bộ ứng dụng được điều khiển từ web.config (ví dụ: <page theme="MyTheme">), tôi không muốn chỉ định chủ đề cho mọi mục trong trang web của mình.

chỉnh sửa: Tôi đã trả lời câu hỏi của riêng mình.Tôi tạo ra trong một file da, kiểm soát này:

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

Sau đó, trong mã của tôi tôi chỉ đơn giản làm điều này:

HyperLink hl = new HyperLink(); 
hl.SkinID = "HyperlinkOne"; 
Các vấn đề liên quan