Опубликован: 30.05.2011 | Доступ: свободный | Студентов: 2407 / 234 | Оценка: 4.12 / 4.41 | Длительность: 12:00:00
Специальности: Программист, Архитектор программного обеспечения
Теги:
Самостоятельная работа 6:
Работа с Windows Azure Blob
asp - код веб формы:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AzureBlobSample.aspx.cs" Inherits="WebRole1.AzureBlobSample" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Size="X-Large" Text="My Image Gallery - Azure Blob Example"></asp:Label> <br /> <br /> <table style="width:100%;"> <tr> <td> <asp:Label ID="lb_name" runat="server" Text="Название"></asp:Label> </td> <td> <asp:TextBox ID="tb_label" runat="server"></asp:TextBox> </td> </tr> <tr> <td> <asp:Label ID="lb_desc" runat="server" Text="Описание"></asp:Label> </td> <td> <asp:TextBox ID="tb_desc" runat="server"></asp:TextBox> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> <asp:Label ID="lb_file" runat="server" Text="Файл"></asp:Label> </td> <td> <asp:FileUpload ID="fu_upload" runat="server" /> </td> </tr> <tr> <td> </td> <td> <asp:Button ID="btn_upload" runat="server" onclick="btn_upload_Click" Text="Загрузить" /> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td> <asp:Label ID="lb_status" runat="server"></asp:Label> </td> <td> <asp:ListView ID="lv_images" runat="server"> <LayoutTemplate> <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> </LayoutTemplate> <EmptyDataTemplate> <h2>No Data Available</h2> </EmptyDataTemplate> <ItemTemplate> <div class="item"> <ul style="width:40em;float:left;clear:left" > <asp:Repeater ID="blobMetadata" runat="server"> <ItemTemplate> <li><%# Eval("Name") %><span><%# Eval("Value") %></span></li> </ItemTemplate> </asp:Repeater> <li> </li> </ul> <img src="<%# Eval("Uri") %>" alt="<%# Eval("Uri") %>" style="float:left"/> </div> </ItemTemplate> </asp:ListView> </td> </tr> <tr> <td> <br /> </td> <td> </td> </tr> </table> </div> </form> </body> </html>
Отметим, что элемент управления, при помощи которого мы будем отображать имеющиеся изображения - это ListView с идентификатором lv_images. Для того чтобы сделать возможным повторени вышеуказанного шаблона для каждого элемента списка мы использовали Repeater (подробнее см. в списке вспомогательных материалов)
Теперь в метод Page_Load добавим код, который при первой загрузке нашей страницы будет проверять наличие контейнера и выводить сообщение о возможных ошибках и привязывать lv_images к источнику данных, вызовом метода RefreshGallery:
try { if (!IsPostBack) { this.EnsureContainerExists(); } this.RefreshGallery(); } catch (System.Net.WebException we) { lb_status.Text = "Network error: " + we.Message; if (we.Status == System.Net.WebExceptionStatus.ConnectFailure) { lb_status.Text += "<br />Please check if the blob service is running at " + ConfigurationManager.AppSettings["storageEndpoint"]; } } catch (StorageException se) { Console.WriteLine("Storage service error: " + se.Message); }
Метод RefreshGallery - привязывает lv_images к источнику данных(контейнеру бинарных объектов):
private void RefreshGallery() { lv_images.DataSource = this.GetContainer().ListBlobs(new BlobRequestOptions() { UseFlatBlobListing = true, BlobListingDetails = BlobListingDetails.All }); lv_images.DataBind(); }
Запустим приложение и убедимся, что оно выполняется верно.