asp.net mvc显示mvc部署外部的图像

时间:2013-06-11 03:55:32

标签: asp.net-mvc razor

我想将我的ASP.NET MVC站点部署到某个位置C:\ home \ MySite \,我想给它一个配置值指向该服务器上的不同位置:C:\ home \ SomeOtherLocation \相册,并在我的页面上显示该位置的图像。

我的控制器返回一个AlbumLinks列表,其中包含一个名为ImagePath的属性,它看起来像“C:\ home \ SomeOtherLocation \ Albums \ Album1 \ Image1.jpg”。我的观点如下:

@model IEnumerable<AlbumLink>

@{
    ViewBag.Title = "Albums";
}

@foreach (AlbumLink l in Model)
{
    <p><img src="@l.ImagePath" /></p>
}

但不显示图像。我确认图像位于正确的位置。这是在视图上显示外部图像的正确方法吗?我知道我可以将相册及其所有图像添加到解决方案中,但我不想这样做。我想部署站点并将其配置为指向要显示的图像集合。我知道这是可行的。实现这一目标的最佳方法是什么?感谢。

2 个答案:

答案 0 :(得分:1)

您无法链接到C:\something之类的文件,因为浏览器无法访问此类路径。所有图片必须由您的网络服务器托管。

您应该使用类似Server.MapPath的内容。

答案 1 :(得分:1)

这里有两个问题:

首先,您不能使用ImagePath,因为路径是服务器的本地路径,而不是客户端。您需要提供完整的网址

其次,IIS无法查看目录结构中的目录。您可以在IIS中添加一个重定向到

之类的位置的目录
    • MySite - &gt; C:\家\ mysite的
    • SomeOtherLocation - &gt; C:\家\ SomeOtherLocation

MVC找不到匹配的控制器,因此将返回IIS查找内容。