2014-01-23 50 views
2

我有一个生成SVG输出的服务器端脚本。我使用MVC3,并在RenderSVG方法我返回SVG的内容,像这样:如何使用C#提供SVG,使其呈现为CSS背景图像

return Content(svgContent, "text/xml; charset=utf-8"); 

在这种情况下svgContent仅仅是一个SVG文件的内容。如果我直接导​​航到我的RenderSVG方法,它会按预期渲染我的图像。但是,如果我设置相同的URL作为CSS标记的background-image属性不呈现。我使用的是最新版本的Chrome,并且可以确认正常的SVG文件正常渲染为背景图像。但是这个服务器端版本没有。

任何想法我做错了什么?这里是我的原始图像和服务器端版本的响应标题。每种情况下图像的内容都是相同的。

原始的响应头

HTTP/1.1 304 Not Modified 
Last-Modified: Mon, 23 Sep 2013 04:56:16 GMT 
Accept-Ranges: bytes 
ETag: "018f63b19b8ce1:0" 
Server: Microsoft-IIS/7.5 
X-Powered-By: ASP.NET 

日期:星期四,2014年1月23日11时38分38秒GMT

脚本响应头

HTTP/1.1 200 OK 
Cache-Control: private 
Content-Type: text/xml; charset=utf-8 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Server: Microsoft-IIS/7.5 
X-AspNetMvc-Version: 4.0 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Thu, 23 Jan 2014 11:39:29 GMT 
Content-Length: 490 

回答

7

尝试使用"image/svg+xml"为MIME输入svg。

return Content(svgContent, "image/svg+xml; charset=utf-8"); 

(见http://www.w3.org/TR/SVG11/mimereg.html

+3

先生,你刚才让我很快乐。引用麦克斯韦Q.克林格下士的话,​​“你的骆驼可能只会吐日期而已。” – Maloric

+2

不客气。那个评论让我的一天也如此:) –