2011-10-24 42 views

回答

8

您应该使用静态图像的服务器相对URL:

/_layouts/images/ProgressWebPart/myImage.png 

虽然该网站相对URL(没有前导斜线)将起作用,请考虑当您的Web部件在两个单独的站点中使用时会发生什么情况。访问这两个网站的用户会要求下面的图像:

http://server/site1/_layouts/images/ProgressWebPart/myImage.png 
http://server/site2/_layouts/images/ProgressWebPart/myImage.png 

即使两个请求返回完全相同的文件,浏览器认为它们不同,因为他们有不同的URL。通过使用服务器相对URL,确保用户只下载一次静态文件。如果他们访问使用您的Web部件的其他网站,则浏览器将使用其缓存中的副本,从而节省时间和带宽。

+0

如果没有位于'/' –

+1

@ DennisGeorge的网站集,这将不起作用 - 出于好奇,您认为此版本的WSS版本是什么?在SP 2010中,所有/ _layouts /请求都应该调用IIS的StaticFileHandler,因此不需要根站点。 –

+0

我曾经有过一次调用/ _layouts/*文件的问题,当时没有根网站集合,但那是在2007年。我从那时起就认为它是理所当然的,但是可以肯定的是2010年没有尝试过。猜猜我将不得不建立一个测试场景,看看会发生什么...... –

1

您不需要使用OM来获取它 - 它的静态并确定您的解决方案如何打包。

举一个例子 - 默认站点标识为SharePoint 2010将在这里

_layouts /图片/ siteIcon.png

所以http://yoursite/_layouts/images/siteIcon.png

和HTP:// yoursite/yoursite/yoursubsite/_layouts /图片/ siteIcon.png

0

它原来是(我的 'ProgressWebPart'): “_layouts /图片/ ProgressWebPart /”

这样,加载PNG文件加载到一个图像控件,可以在C#进行搭配:

Image image = new Image(); 
image.ImageUrl = "_layouts/images/ProgressWebPart/myImage.png";