Изображения не отображаются - PullRequest
0 голосов
/ 24 ноября 2011

У меня проблемы с отображением списка изображений на сайте.

используя этот вопрос Как отобразить список изображений из папки на жестком диске на веб-сайте ASP.NET?

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

IE.

<a id="MainContent_RepeaterImages_Image_78"><img src="C:\Users\k\Galleries\Photos%20from%20the%20Final%20Conference\IMG_5962.jpg" alt="" />

код позади:

string[] filesindirectory = Directory.GetFiles(Server.MapPath("Galleries") + "\\Photos from the Final Conference");

            List<String> images = new List<string>(filesindirectory.Count());

            foreach (string item in filesindirectory)
            {
                images.Add(String.Format("~/Images/{0}", System.IO.Path.GetFileName(item)));
            }

            RepeaterImages.DataSource = images;
            RepeaterImages.DataBind();

и осина:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="test">
    <asp:Repeater ID="RepeaterImages" runat="server">
        <ItemTemplate>
            <asp:HyperLink ID="Image" runat="server" ImageUrl='<%# Container.DataItem %>' />
        </ItemTemplate>
    </asp:Repeater>
</div>

есть идеи о том, чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 24 ноября 2011

Вам нужно будет использовать относительные пути к файлам, хранящимся внутри или под корнем приложения (то есть виртуального каталога (корневой папки) этого веб-приложения).

Использование полных, физических имен файлов будет работать только (насколько мне известно) в тех случаях, когда сам файл веб-страницы был открыт локально с использованием протокола file:/// (и «URL-адреса» также могут потребоваться для соблюдения) , И я не думаю, что когда-либо сталкивался с причиной или необходимостью сделать это - потому что относительные пути будут работать в любом случае.

Кроме того, код кажется противоречивым: у вас есть примитивный элемент HTML (img), определенный с предположительно жестко заданным значением пути (учитывая, что вы не можете обновить элементы управления, не относящиеся к серверу, естественным образом из кода как и в случае с серверными элементами управления - если, возможно, я не запутался в том, как он отображает ваш HyperLink из повторителя.) Код, который вы показываете, который генерирует пути, ставит перед ними префикс ~/images, но это не появляется в ранее упомянутом пути - вы уверены, что это точное представление результата показанного кода? Как правило, вам нужно отобразить путь, чтобы получить такой вывод, и вряд ли вы отклоните часть указанного пути.

2 голосов
/ 24 ноября 2011

Первое предложение принятого ответа гласит:

Сначала вам нужно поместить изображения, которые вы хотите отобразить, под веб-деревом.

Это не будет работать, если изображения не находятся в папке в папке вашего веб-приложения.

Обратите внимание, что ответ 2 nd также указывает на это.


Если вы действительно хотите использовать физические пути, то используйте метод file: /// в качестве заметок г-на Разочарования (имейте в виду, что это должен быть локальный путь (для клиента), хотя я не уверен на 100%) если это работает во всех браузерах).

0 голосов
/ 24 ноября 2011

Возможно, ваш путь ссылается неправильно, попробуйте использовать Server.MapPath()

Пожалуйста, ознакомьтесь с этой документацией о Пути к веб-проектам ASP.NET

...