2014-12-24 2 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(); 
    } 
} 

Webcode выглядит следующим образом:

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

который выглядит отлично. На веб-странице отображается панель, но изображения не являются, а только заполнителями.

Пожалуйста, помогите я действительно Nubi в asp.net

+0

Проблема не в качестве таковых, связанных с .NET, но на пути вашего файла. Физический путь на сервере, конечно же, не тот, который вы хотите использовать, вы должны хранить свои изображения в любой папке внутри вашего веб-сайта и указывать на него в своем HTML-источнике. –

+0

Как это отличается от того, что я сделал? я использовал Server.MapPath(), папка находится внутри webroot – tal

+0

cfr мой ответ ... не беспокойтесь, это распространенная ошибка. Однако важно понять разницу между физическим путем и веб-сайтом. Вы можете сохранить тот же физический путь, но, изменив конфигурацию IIS, веб-путь может быть совершенно другим. в основном пользователи вашего сайта не должны знать и не иметь ни малейшего представления о вашей иерархии папок на стороне сервера. –

ответ

1

MapPath дает физический путь к файлу или папке внутри вашего сервера. Чтобы отображать ваши изображения на веб-странице, вам необходимо либо использовать веб-путь, либо абсолютный, либо относительно вашего сайта или отображаемой страницы. В принципе, вам просто нужно будет изменить это в коде:

ib.ImageUrl = file; 

должен быть

ib.ImageUrl = "/data/" + Path.GetFileName(file); 
Смежные вопросы