我动态绑定了一些图像控件,但没有设置图像URL。当我使用皮肤文件然后设置SkinId时,我收到以下错误:
The 'SkinId' property can only be set in or before the Page_PreInit event for static controls. For dynamic controls, set the property before adding it to the Controls collection.
如何获取虚拟主题的位置?
答案 0 :(得分:1)
在标记上设置SkinId
<asp:Image runat="server" id="LogoImage" SkinId="LogoImage" />
要以编程方式设置它,您需要在PreInit事件
上进行设置public void Page_PreInit(object sender, EventArgs e)
{
LogoImage.SkinID = "LogoImage";
}
这是一篇用于以编程方式设置SkinId的博客文章 http://blogs.conchango.com/simonevans/archive/2005/06/09/How-to-programmatically-assign-a-SkinID-to-a-control-while-using-a-master-page-in-ASP.net-2.0.aspx
最后,如果您只是在查找文件夹,则取决于您使用的是Theme还是StylesheetTheme。
var path = "~/App_Themes/" + Page.Theme + "/images";
var path = "~/App_Themes/" + Page.StylesheetTheme + "/images";
如果您在Grid中执行此操作,请使用自定义绑定方法
<asp:Image runat="server" id="myImage" ImageUrl='<%# GetThemedImage(((Product)Container.DataItem).Image)%>' />
然后在代码隐藏
public string GetThemedImage(string image)
{
return "~/App_Themes/" + Page.Theme + "/images/" + image;
}