0

我正在尝试创建一个简单的图片库。上传作品,但我在显示这些图像时遇到问题。

在互联网上,我发现这是正确的方法:

    [NotMapped]
    public string ImageUrl
    {
        get
        {
            var isEmpty = String.IsNullOrWhiteSpace(ImgName);

            if(isEmpty)
            {
                return Path.Combine("~/Images", "noImageAvailable.png");
            }else
            {
                return Path.Combine("~/Images/uploaded", ImgName);
            }
        }
    }

并且在视图中

@foreach (var item in Model) {
    ...
    @{ var imgPath = HostingEnvironment.MapPath(item.ImageUrl); }
    <img src="@Url.Content(imgPath)"/>

产生:

<img src="C:\......\Images\uploaded\0_634927659072110613.jpg"/>

对我有用的是:

    [NotMapped]
    public string ImageUrl
    {
        get
        {
            var isEmpty = String.IsNullOrWhiteSpace(ImgName);

            if(isEmpty)
            {
                return Path.Combine("../Images", "noImageAvailable.png");
            }else
            {
                return Path.Combine("../Images/uploaded", ImgName);
            }
        }
    }

在视图中:

@foreach (var item in Model) {
    .....
    <img src="@Url.Content(item.ImageUrl)"/>

产生:

<img src="../Images/uploaded\0_634927649098750170.jpg"/>

评论

有2个区别:

  1. 〜/图像与../图像
  2. 视图中的线条

有趣的是,这条线

<img src="C:\......\Images\uploaded\0_634927659072110613.jpg"/>

在静态独立文件中显示图像,而当它由 IIS 提供时,它不会。只有空白空间而不是图像。

我的问题是什么是正确的方法,为什么第一个方法不起作用?

4

1 回答 1

1

您的代码完全按照您的要求执行。第一个不起作用,因为var imgPath = HostingEnvironment.MapPath(item.ImageUrl);将服务器上的物理路径返回到图像 URL,而不是 URL。将第一个块与<img src="@Url.Content(item.ImageUrl)"/>. 这看起来像:

[NotMapped]
public string ImageUrl
{
    get
    {
        var isEmpty = String.IsNullOrWhiteSpace(ImgName);

        if(isEmpty)
        {
            return Path.Combine("~/Images", "noImageAvailable.png");
        }else
        {
            return Path.Combine("~/Images/uploaded", ImgName);
        }
    }
}

以你的观点:

@foreach (var item in Model) {
    .....
    <img src="@Url.Content(item.ImageUrl)"/>
  1. .net 中的“~/Images/...”从网络根目录说,找到文件夹 Images,然后...
  2. “../Images/...”是相对于当前位置的 - 上一个文件夹,找到文件夹图像,然后...
于 2013-01-03T04:05:03.497 回答