尝试以可能的方式嵌入SVG对象,但浏览器在呈现html时提示保存文件

Las*_*eak 2 asp.net html5 svg asp.net-mvc-3

尝试过W3学校列出的所有嵌入方法,然后再尝试一些.即使提供宽度和高度,资源管理器也会显示不正确的大小,chrome和firefox只是提示下载.使用Visual Studio 2010内置的开发服务器,可能需要添加mime类型以供支持,不要去哪里.

SVG文件在我的内容文件夹中,我在视图中创建html,其中ImageFileName是"filename.svg":

<object data="/Content/ExternalCats/@RootCat.ImageFileName" type="image/svg+xml"></object>
Run Code Online (Sandbox Code Playgroud)

要么

<embed src="/Content/ExternalCats/@RootCat.ImageFileName" width="300" height="100"
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" /> 
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 8

您可以尝试<svg>直接嵌入到HTML中.现代浏览器支持它:

@Html.Raw(File.ReadAllText(Server.MapPath("~/content/externalcats/" + RootCat.ImageFileName)))
Run Code Online (Sandbox Code Playgroud)

或者使用正确的MIME类型(image/svg+xml)提供SVG :

public ActionResult Svg()
{
    return File(Server.MapPath("~/content/test.svg"), "image/svg+xml");
}
Run Code Online (Sandbox Code Playgroud)

然后:

<object data="@Url.Action("svg")" type="image/svg+xml">
    <embed src="@Url.Action("svg")" type="image/svg+xml"/>
</object>
Run Code Online (Sandbox Code Playgroud)

或者如果您使用的是IIS 7.0+,则可以使用扩展名定义静态MIME映射.svg:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    <staticContent>
        <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
    </staticContent>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)