Добавление встроенного SVG-файла MVC с использованием Html.Raw

0

У меня есть файл 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
asp.net-mvc
internet-explorer-9

1 ответ

0
Лучший ответ

Должен ли тип контента отличаться для содержимого 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"/>
  • 0
    Вы правы в этом, но ... я изменился, но ничего не изменил. Это показано в Chrome, но не в IE9.
  • 0
    @Mendez: интересно. Между этим и контентом X-UA-Compatible вас уже был, это все, что я видел для SVG-контента в IE9. Какой DOCTYPE вы используете? Можете ли вы попробовать явно использовать HTML5 DOCTYPE? Будет ли для вас возможным привести живой (хотя и урезанный) пример этого?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню