2014-12-24 163 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);