2014-12-24 123 views
0

我正在编程一个webform应用程序,它显示图像。目前使用的LocalServer 的代码如下所示:图像不显示在aspx网页

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真的史努比

+0

的问题并不像这样涉及到.NET,但你的文件的路径。服务器上的物理路径当然不是您想要使用的,您应该将图像存储在webroot内的任何文件夹中并指向您的HTML源代码。 –

+0

与我所做的有什么不同?我用Server.MapPath(),该文件夹是在webroot – tal

+0

cfr我的答案...不要担心这是一个常见的错误。尽管理解物理路径和Webpath之间的区别很重要。您可以保持完全相同的物理路径,但通过更改您的IIS配置,webpath可能完全不同。基本上你的网站用户不应该知道,也不知道你的文件夹层次结构服务器端。 –

回答

1

MapPath向你服务器内部文件或文件夹的物理路径。 为了在网页上显示你的图像,你需要使用一个webpath,无论是绝对还是相对于你的网站或显示的页面。基本上,你只需要在你的代码更改此:

ib.ImageUrl = file; 

应该

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