Parte 3: Layout e menu de categoria

por Joe Stagner

A Tailspin Spyworks demonstra como é extraordinariamente simples criar aplicativos avançados e escalonáveis para a plataforma .NET. Ele mostra como usar os ótimos novos recursos no ASP.NET 4 para criar uma loja online, incluindo compras, check-out e administração.

Esta série de tutoriais detalha todas as etapas executadas para criar o aplicativo de exemplo Tailspin Spyworks. A parte 3 aborda a adição de layout e um menu de categoria.

Adicionando algum layout e um menu de categoria

Em nosso site master página, adicionaremos um div para a coluna do lado esquerdo que conterá nosso menu de categoria de produto.

<div id="content">
  <div id="rightColumn"></div>
  <div id="mainContent">
    <div id="centerColumn">
       <asp:ContentPlaceHolder ID="MainContent" runat="server"></asp:ContentPlaceHolder>
    </div>
  </div>
  <div id="leftColumn">
<!-- Our menu will go here -->       
  </div>
  <div class="clear"></div>
</div>

Observe que o alinhamento desejado e outra formatação serão fornecidos pela classe CSS que adicionamos ao arquivo Style.css.

#leftColumn
{
position: relative;float: left;width: 14em;padding: 2em 1.5em 2em;background: #fff url('images/a1.gif') repeat-y right top;
        top: 1px;
        left: 0px;
        height: 100%;
}

O menu categoria de produto será criado dinamicamente em runtime consultando o banco de dados commerce para categorias de produtos existentes e criando os itens de menu e links correspondentes.

Para fazer isso, usaremos dois do ASP. Os poderosos controles de dados do NET. O controle "Fonte de Dados de Entidade" e o controle "ListView".

Captura de tela que mostra o controle Fonte de Dados da Entidade e o controle ListView.

Vamos alternar para "Design View" e usar os auxiliares para configurar nossos controles.

Captura de tela que mostra o Modo de Exibição de Design.

Vamos definir a propriedade ID EntityDataSource como EDS_Category_Menu e clicar em "Configurar Fonte de Dados".

Captura de tela que mostra onde clicar em Configurar Fonte de Dados.

Selecione a Conexão CommerceEntities que foi criada para nós quando criamos o Modelo de Fonte de Dados de Entidade para nosso Banco de Dados de Comércio e clique em "Avançar".

Captura de tela que mostra onde clicar em Avançar.

Selecione o nome do conjunto de entidades "Categorias" e deixe o restante das opções como padrão. Clique em "Concluir".

Agora vamos definir a propriedade ID da instância de controle ListView que colocamos em nossa página para ListView_ProductsMenu e ativar seu auxiliar.

Captura de tela que mostra onde definir o controle Fonte de Dados da Entidade.

Embora possamos usar opções de controle para formatar a exibição e a formatação do item de dados, nossa criação de menu exigirá apenas marcação simples para que insiramos o código na exibição de origem.

<asp:ListView ID="ListView_ProductsMenu" runat="server" DataKeyNames="CategoryID" 	DataSourceID="EDS_Category_Menu">
   <EmptyDataTemplate>No Menu Items.</EmptyDataTemplate>
   <ItemSeparatorTemplate></ItemSeparatorTemplate>
   <ItemTemplate>
      <li>
         <a href='<%# VirtualPathUtility.ToAbsolute("~/ProductsList.aspx?CategoryId=" + 
                                Eval("CategoryID")) %>'><%# Eval("CategoryName") %></a>
      </li>
   </ItemTemplate>               
   <LayoutTemplate>
      <ul ID="itemPlaceholderContainer" runat="server">
         <li runat="server" id="itemPlaceholder" />
      </ul>
      <div>
      </div>
   </LayoutTemplate>

Observe a instrução "Eval": <%# Eval("CategoryName") %>

A sintaxe <ASP.NET %# %> é uma convenção abreviada que instrui o runtime a executar o que está contido e gerar os resultados "em Linha".

A instrução Eval("CategoryName") instrui que, para a entrada atual na coleção associada de itens de dados, busque o valor dos nomes de item do Modelo de Entidade "CategoryName". Essa é uma sintaxe concisa para um recurso muito poderoso.

Vamos executar o aplicativo agora.

Captura de tela que mostra o aplicativo em execução.

Observe que nosso menu de categoria de produto agora é exibido e quando passarmos o mouse sobre um dos itens de menu de categoria, podemos ver os pontos de link do item de menu para uma página que ainda não implementamos denominada ProductsList.aspx e que criamos um argumento de cadeia de caracteres de consulta dinâmica que contém a ID da categoria.