将包含在HTML页面中的SVG加载到.aspx页面
问题描述:
我有一个svg.html文件,其中svg内容是在一个元素中定义的。 我已经梳理了3天的互联网,还没有找到一个解决方案,为什么我使用的图标没有出现在网页呈现的.aspx。 svg.html看起来是这样的:使用<object></object>
标记将svg.html将包含在HTML页面中的SVG加载到.aspx页面
- :
<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>
我曾尝试以下。
-
<use>
标签。 - 在web.config中
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
我在做什么错?
请注意,我无法更改svg.html文件,并且这是一个ASP.Net Web窗体的项目。
答
如果你有一个包含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"));
参考文献:
参考:https://stackoverflow.com/questions/29478812/embedding-svg-in-asp-net-page –
@UpendraJoshi请注意,我不能改变的SVG。 html文件,这是一个Asp.Net web表单项目。 – user3502734
您的HTML页面是否有完整的标记(包括''&'
'标签?如果没有,您可以继续创建一个用户控件并使用iframe插入HTML页面引用。 –