2017-10-13 180 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