我正在实施主题,以便根据请求的网址重新命名现有网站(徽标,颜色,图片等)。我知道如何做到这一点,并使皮肤工作正常,除了一些与图像的URL相关的例外。
具体来说,我有一个控制属性,皮肤不可行。在实施主题之前,它看起来像这样:
<DisplayImageChecked Url="~/Images/BobIcon-Green.png" />
显然,这不适用于主题。经过多次试验和错误阅读后,我试图像这样实现它:
<DisplayImageChecked Url="~/AppThemes/<%= Page.Theme %>/Images/BobIcon-Green.png" />
然而,这不起作用。生成的html看起来像:
<img src="AppThemes/%3C%25=%20Page.Theme%20%25%3E/Images/BobIcon-Green.png"/>
任何指向正确方向的人都会受到赞赏。
大卫
答案 0 :(得分:2)
在数据绑定控件中使用绑定语法(观看单引号和双引号):
<DisplayImageChecked Url='<%# "~/AppThemes/" + Page.Theme + "/Images/BobIcon-Green.png" %>' />
答案 1 :(得分:0)
是否有理由不能将图像转储到与主题相同的文件夹中?如果您将图像说例如:“image.gif”放入主题文件夹中,那么您可以直接在皮肤中引用它。
ImageUrl="image.gif"
当您在页面中的控件上应用此外观时,这将解决得很好。也比尝试动态URL更容易。
答案 2 :(得分:0)
您也可以使用“Images / BobIcon-Green.png”作为网址。 ASP将负责将Url解析为您主题中的目录。
答案 3 :(得分:0)
这是完成任务的正确方法:
使用UrlProperty属性装饰您的媒体资源,这将告诉ASP.NET自动将您的部分网址转换为正确的网址。
使用“〜/ AppThemes /”+ Page.Theme +“/ Images / BobIcon-Green.png”可以解决这个问题,但这不是首选方式,因为你需要自己完成所有的工作,这总是很好的做法将所有工作留给ASP