2017-10-13 190 views
0

我有一个svg.html文件,其中svg内容是在一个元素中定义的。 我已经梳理了3天的互联网,还没有找到一个解决方案,为什么我使用的图标没有出现在网页呈现的.aspx。 svg.html看起来是这样的:使用<object></object>标记将svg.html将包含在HTML页面中的SVG加载到.aspx页面

  1. <div class="svg-icons"> 
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="svg-icons"> 
    <symbol id="icon-menu" viewBox="0 0 18 18"> 
    <path d="##path value##"></path> 
    </symbol> 
    </svg> 
    </div> 
    

    我曾尝试以下。

  2. <use>标签。
  3. 在web.config中<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />

我在做什么错?

请注意,我无法更改svg.html文件,并且这是一个ASP.Net Web窗体的项目。

+0

参考:https://stackoverflow.com/questions/29478812/embedding-svg-in-asp-net-page –

+0

@UpendraJoshi请注意,我不能改变的SVG。 html文件,这是一个Asp.Net web表单项目。 – user3502734

+0

您的HTML页面是否有完整的标记(包括''&''标签?如果没有,您可以继续创建一个用户控件并使用iframe插入HTML页面引用。 –

回答

1

如果你有一个包含SVG图像的HTML文件中完整的标记,你可以将文字控制&后面通过剥离不必要的标记用正则表达式分配从代码生成的HTML页面的内容:

ASPX

<asp:Literal ID="placeholder" runat="server" /> 

代码隐藏

protected void Page_Load(object sender, EventArgs e) 
{ 
    string html; 
    using (StreamReader sr = File.OpenText(Server.MapPath("~/path_to_html_file.html")) 
    { 
     html = sr.ReadToEnd(); 
     sr.Close(); 
    } 

    Regex start = new Regex(@"[\s\S]*<body[^<]*>", RegexOptions.IgnoreCase); 
    html = start.Replace(html, ""); 
    Regex end = new Regex(@"</body[\s\S]*", RegexOptions.IgnoreCase); 
    html = end.Replace(html, ""); 

    placeholder.Text = html; 

} 

如果您有原始SVG文件,并想在文字标签元素来使用它,你可以简单地使用<iframe src="/path_to_SVG_file.svg" />/<embed src="/path_to_SVG_file.svg" />用户控件内,或InnerHtml属性分配div

ASPX

<div id="placeholder" runat="server"></div> 

代码隐藏

placeholder.InnerHtml = File.ReadAllText(Server.MapPath("~/path_to_SVG_file.svg")); 

参考文献:

Include contents of an html page in an aspx page

Interactive Mapping Using SVG & ASP.NET

相关问题