0

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

我的控制器返回一个 AlbumLink 列表,其中包含一个名为 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>
}

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

4

2 回答 2

1

这里有2个问题:

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

其次,IIS 无法从您的目录结构中看到目录。您可以在 IIS 中添加一个目录,该目录重定向到该位置,例如

    • 我的站点 -> c:\home\MySite
    • SomeOtherLocation -> c:\home\SomeOtherLocation

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

于 2013-06-11T07:04:40.367 回答
1

您不能拥有指向文件的链接,C:\something因为浏览器无法访问这样的路径。所有图像必须由您的网络服务器托管。

你应该使用类似的东西Server.MapPath

于 2013-06-11T04:19:03.940 回答