【问题标题】:images are not displayed on aspx web page图像不显示在 aspx 网页上
【发布时间】:2014-12-24 12:17:47
【问题描述】:

我正在编写一个显示图像的网络表单应用程序。当前使用本地服务器 代码如下所示:

public partial class WebForm1 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        foreach (string file in Directory.GetFiles(Server.MapPath("~/Data/")))
        {
            ImageButton ib = new ImageButton();
            ib.ImageUrl = file;
            ib.Width = Unit.Pixel(100);
            ib.Height = Unit.Pixel(100);
            ib.Style.Add("padding", "2px");
            ib.Click += imageButton_Click;
            Panel1.Controls.Add(ib);
        }
    }

    private void imageButton_Click(object sender, ImageClickEventArgs e)
    {
        throw new NotImplementedException();
    }
}

网页代码如下所示:

    src="file:///C:/folder/WebApplication1/Data/Chrysanthemum.jpg" 

看起来不错。 在网页上显示面板,但图像不是,只是占位符。

请帮助我在asp.net中真的很nubi

【问题讨论】:

  • 问题本身与 .NET 无关,而与文件的路径有关。服务器上的物理路径当然不是您想要使用的,您应该将图像存储在 webroot 内的任何文件夹中,并在 HTML 源代码中指向它。
  • 它和我做的有什么不同?我使用了 Server.MapPath(),该文件夹在 webroot 内
  • cfr 我的回答...别担心,这是一个常见错误。不过,了解物理路径和 Web 路径之间的区别很重要。您可以保持完全相同的物理路径,但通过更改 IIS 配置,webpath 可能会完全不同。基本上,您的网站用户不应该知道或对您的文件夹层次结构服务器端有任何线索。

标签: webforms


【解决方案1】:

MapPath 为您提供服务器内文件或文件夹的物理路径。 为了在网页上显示您的图像,您需要使用绝对或相对于您的网站或正在显示的页面的网络路径。基本上,你只需要在你的代码中改变它:

ib.ImageUrl = file;

应该是

ib.ImageUrl = "/data/" + Path.GetFileName(file);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 2011-03-26
    • 1970-01-01
    • 2013-12-28
    • 2011-06-26
    • 1970-01-01
    • 2012-07-14
    • 2013-11-09
    相关资源
    最近更新 更多