none
MVC Control View内部机理探究—有SVG的View MVC2 系统在FireFox不显示svg RRS feed

  • 問題

  • 今天,测试程序的兼容性。在FireFox测试由svg实现的WebGIs程序。经过多次调试发现一个奇怪的问题:

    svg放在MVC 的View中程序启动后svg不显示,显示缺少插件。这个现象在FireFox4.0中出现,在IE6中完全正常。请教各位指点一二

    代码如下:

    Index.aspx

    <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>test</title>
    <!--[if lte IE 8]>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <![endif]-->
    <!--[if gt IE 8]>-->
    <meta http-equiv="Content-Type" content="text/xml; charset=UTF-8" />
    <!--<![endif]-->
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="../../Scripts/jquery-1.5.2.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(document).ready(function() {

    });
    </script>
    </head>
    <body>
    <div class="page">
    <embed id="svgMap" name="svgMap" src="../../SVG/hover.svg" width="518px" height="653px" type="image/svg+xml"></embed>
    </div>
    </body>
    </html>

    //HomeControl.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;

    namespace MvcApplication1.Controllers
    {
    [HandleError]
    public class HomeController : Controller
    {
    public ActionResult Index()
       {
    return View();
      }
    }
    }

    另外提示:

    1.使用Html.SVG()的方式不成功。

    2.使用Html.Pari...的方式不成功

    3.网上有MVC调用WebUserContrl解决的但是没有实现成功。没有显示

    下面的链接是查找到的资料,参照他实现。

    http://www.cnblogs.com/dudu/archive/2011/03/19/asp_net_mvc_user_control.html

    调试发现不知道controlOutput为什么为string.Empty

    我只是创建了webUserControl1然后将   <embed id="svgMap" name="svgMap" src="../../SVG/hover.svg" width="518px" height="653px" type="image/svg+xml"></embed>放到里面。

    2011年4月26日 上午 07:59

解答

所有回覆

  • http://briian.com/?p=5306

    不是插件的问题,假如svg不放到mvc view中是可以显示的。不知道为什么放到mvc view中就不能显示了。这是问题的关键

    2011年4月26日 上午 10:34
  • 那就是路徑的問題了,改用Url.Content("~/SVG/hover.svg")
    2011年4月26日 下午 02:07
    版主
  • 经过测试不是路径问题,仍旧不显示。现在又发现了一个奇怪的问题。

    可能是问题的根源

    file:///D:/JOB/Weather/Setup/test.html

    这种方式在FireFox 4.0上就能使用

     

    部署到网站上就不显示,显示需要插件。

    http://localhost/test.html

    不知道为什么?IE6都能正常显示

    我的开发环境:

    visual studio 2008 sp1 + MVC2

    windows xp sp3

    IIS 5.1

    现在怀疑IIS的问题?现在我测试一下

    部署到windows 7 IIS7.1 看是是否好用!

     

    谢谢,阿尼!

     

     

    2011年4月27日 上午 01:30
    • 已標示為解答 OldChild 2011年4月27日 上午 05:28
    2011年4月27日 上午 03:02
    版主
  • 问题解决了

    经过了无数次的实验终于将问题解决了。

    经过试验,同样的代码部署在IIS 7.1上无论使用object 还是embed标签都好用。

    详细见http://blog.csdn.net/pipi0714

    • 已標示為解答 OldChild 2011年4月27日 上午 05:27
    • 已取消標示為解答 OldChild 2011年4月27日 上午 05:27
    2011年4月27日 上午 05:27