У меня есть файл SVG, созданный CorelDraw, который необходимо отобразить на веб-странице, а затем сделать на нем Javascript. Созданный файл.SVG можно открыть как в Chrome, так и в IE9 при двойном щелчке по нему в проводнике Windows, но при использовании приложения MVC он открывается только в Chrome. Вот код:
HTML:
<div id="svgbox" style="border: 1px solid black">
@Html.Raw(Model.SVGData)
</div>
И контроллер, который получает данные SVG:
viewmodel.SVGData = System.IO.File.ReadAllText(svgFileName);
Мой ViewModel имеет:
public string SVGData { get; set; }
В моем представлении _shared есть:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
Любые идеи о том, как сделать эту работу в IE9?
Rds.
[РЕДАКТИРОВАТЬ]
Я установил простой код, чтобы проверить эту ошибку. Поэтому у меня есть следующий Index.html:
@model TestSVGIE9.ViewModel.TestViewModel
<h2>File: @Model.SVGFileName </h2>
@Html.Raw(Model.SVGData)
Контроллер:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TestSVGIE9.ViewModel;
namespace TestSVGIE9.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
TestViewModel viewModel = new TestViewModel();
string path = System.Web.HttpContext.Current.Server.MapPath("~/Content/");
string SVGFileName = path + "Test.svg";
viewModel.SVGFileName = SVGFileName;
viewModel.SVGData = System.IO.File.ReadAllText(SVGFileName);
return View(viewModel);
}
}
}
ViewModel:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace TestSVGIE9.ViewModel
{
public class TestViewModel
{
public string SVGFileName { get; set; }
public string SVGData { get; set; }
}
}
И SVG файл (простой красный круг, созданный с помощью InkScape):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
sodipodi:docname="New document 1">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="375"
inkscape:cy="520"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="706"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
sodipodi:type="arc"
style="fill:#ff0000;fill-opacity:1;stroke:none"
id="path2985"
sodipodi:cx="312.85715"
sodipodi:cy="289.50504"
sodipodi:rx="104.28571"
sodipodi:ry="91.428574"
d="m 417.14286,289.50504 a 104.28571,91.428574 0 1 1 -208.57143,0 104.28571,91.428574 0 1 1 208.57143,0 z" />
</g>
</svg>
Работа с Chrome (показ SVG на индексной странице). Не работает на IE9...
Помогите оценить...
Должен ли тип контента отличаться для содержимого SVG? В настоящее время у вас есть:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Для SVG-контента, я думаю, вам понадобится следующее:
<meta http-equiv="Content-Type" content="application/xhtml+html; charset=utf-8"/>
X-UA-Compatible
вас уже был, это все, что я видел для SVG-контента в IE9. КакойDOCTYPE
вы используете? Можете ли вы попробовать явно использовать HTML5 DOCTYPE? Будет ли для вас возможным привести живой (хотя и урезанный) пример этого?