如何在ASP.Net MVC razor helper中指定图像的虚拟路径

时间:2012-03-25 23:08:41

标签: asp.net html css asp.net-mvc razor

在我的razor样式助手类中(位于App_Code文件夹中,我有这行代码:

<img src="../../Content/images/ajax_activity.gif" alt="loading"/>

这在Cassini中运行良好,但是当我将应用程序部署到IIS(虚拟目录)时,IIS无法找到路径。虚拟路径被忽略。 这也行不通:

<img src="@Href("~/Content/images/ajax_activity.gif")" alt="loading" />

5 个答案:

答案 0 :(得分:27)

试试这个:

<img src="@Url.Content("~/Content/images/ajax_activity.gif")" alt="loading" />

答案 1 :(得分:7)

好的,解决了,虽然我不确定它为什么会起作用。在尝试以下所有组合后没有成功:

<img src="../Content/images/ajax_activity.gif" alt="loading"/>
<img src="/Content/images/ajax_activity.gif" alt="loading"/>
<img src="~/Content/images/ajax_activity.gif" alt="loading"/>
<img src="Content/images/ajax_activity.gif" alt="loading"/>

以下最终按预期工作

<img src="./Content/images/ajax_activity.gif" alt="loading"/>

它使用虚拟目录集正确返回了图像路径。有人能解释一下吗?

答案 2 :(得分:1)

您可以使用@Url.Content方法将虚拟相对路径转换为绝对应用程序路径,如下所示:

<img src=@Url.Content("~/images/picture.png") alt="picture description">

它将转换为此HTML代码转发给客户端:

<img src="/appname/images/picture.png" alt="picture description">

更新: 另一方面,您可以将图像转换为base64,它也将正确显示:

<img src="data:image/png;base64,iVBORw0KG...SuQmCC" alt="picture description">

答案 3 :(得分:0)

在IIS中的虚拟目录中部署时,应用程序根目录可能与您在开发环境中的不同。

如果你的应用网址类似

http://localhost/MyWebApp/

ASP.NET将认为root是“localhost”,它应该是“MyWebApp”。

要解决此问题,您必须将虚拟目录转换为应用程序:在IIS管理器中,找到您的目录,右键单击它,然后“转换为应用程序”。

答案 4 :(得分:0)

我知道这是一篇旧文章,但是我需要的信息在这里。

对我来说,缺少的部分是“出版时”。因此,对于任何未来的寻求如何进行Web配置转换的开发人员,我遵循的过程是:

  1. 为每个项目配置(即部署)添加转换文件

  2. 添加特定于环境的元素(不要忘记xdt属性)

  3. 为您的本地开发修改Web.config。

项目发布后,将发生转换。