主题,虚拟路径和基础href

时间:2012-02-06 14:06:21

标签: asp.net url path themes

我创建了一个带皮肤的主题,包括例如以下内容:

<asp:Image runat="server" runat="server" SkinID="SquareCopy" 
    ImageUrl="~/App_Themes/MyTheme/square_copy.png" />

这将创建(取决于我称之为的页面):

<img src="../App_Themes/MyTheme/square_copy.png">

如果我只想要(不../)我需要做什么:

<img src="App_Themes/MyTheme/square_copy.png">

我尝试省略~/ImageUrl="App_Themes/MyTheme/square_copy.png" />

但这似乎没有任何影响。我想要修复路径的原因是在整个项目中使用base href

任何建议的Thx!

修改: 有趣的是,如果我使用没有skin-id的Image-Control,我可以让它像我想要的那样渲染路径:

<asp:Image id="Image1" runat="server"
    ImageUrl="App_Themes/MyTheme/square_copy.png"/>

结果:

<img id="MainContent_Image1" alt="Image text" 
    src="App_Themes/VolunteerClient/square_copy.png">

2 个答案:

答案 0 :(得分:1)

皮肤文件中定义的元素的基本URL始终为

App_Themes/MyTheme/

其中MyTheme是您主题的名称。 例如

Path="~/App_Themes/MyTheme/Images/a.jpg"

将被解决     路径= “App_Themes文件/ MyTheme的/图像/ A.JPG”

Path="Images/a.jpg"

将被解决     路径= “App_Themes文件/ MyTheme的/图像/ A.JPG”

如果您想要更改该行为,则需要覆盖路径。

希望有所帮助

答案 1 :(得分:0)

尝试这样的事情......

<asp:Image runat="server" runat="server" SkinID="SquareCopy" 
    ImageUrl="<%= Page.ResolveClientUrl("~/App_Themes/MyTheme/square_copy.png") %>" />