160 likes | 241 Views
Site Navigation API. ASP.Net 2.0 - Navegação em Sites. Novos serviços da ASP.Net 2.0. ASP.Net 2.0 disponibiliza um conjunto de serviços (“application sevices”) que ajuda os programadores de aplicações a construir funcionalidades avançadas com cada vez menos código.
E N D
Site Navigation API ASP.Net 2.0 - Navegação em Sites
Novos serviços da ASP.Net 2.0 • ASP.Net 2.0 disponibiliza um conjunto de serviços (“application sevices”) que ajuda os programadores de aplicações a construir funcionalidades avançadas com cada vez menos código. • O serviço de Navegação num Web Site assenta: • numa infra-estrutura capaz de suportar a navegação, e • em bons controlos de visualização • Menu, TreeView e SiteMapPath
A infra-estrutura de Navegação • A infra-estrutura de navegação assenta em dois elementos : • Mapa do Site - contentor lógico para a colecção hierárquica dos nós, cada um representando uma página da aplicação ou directório.O mapa do site está representado num ficheiro XML. Este file será transformado no objecto SiteMap • ProviderElemento capaz de aceder aos dados de navegação do mapa do site e disponibilizar essa informação aos novos controlos • Esta infra-estrutura pode ser personalizada através da construção de novos controlos e da criação de novos providers
O Mapa do Site • Tem uma estrutura arborescente cujo nó de topo é um nó do tipo siteMapNode que é a página de topo. • O elemento raíz do XML não é o nó de topo mas é um nó do tipo siteMap. • A estrutura de navegação pode estar definida em vários ficheiros. • O atributo SiteMapFile, do elemento siteMap, indica o caminho até ao ficheiro que contém os nós filhos do nó actual. • Os ficheiros de navegação são normalmente guardados na raíz do site com o nome web.sitemap pois por omissão o provider procura esse ficheiro
Comunicação entre os Controlos e a Infra-estrutura Ficheiro XML com definição dos nós (web.sitemap) Controlos Menu, TreeView,SiteMapPah,... SiteMapProvider (Provider por omssão) SiteMapDataSource Consulta informação sobreo provider configurado Ficheiro Configuração define o Provider
A infra-estrutua • Alguns controlos conseguem obter os dados directamente do Provider • Outros controlos precisam de um intermediário (SiteMapDataSource) para obter essa informação • A configuração do provider é feita através de uma entrada no ficheiro de configuração • A plataforma fornece um provider capaz de interpretar um ficheiro XML designado por web.sitemap
Controlos de Navegação • ASP.Net fornece-nos alguns controlos adequados à navegação e identificação da pagina no site. • Só o controlo SiteMapPath é capaz de obter os dados diectamentea partir do provider. • Os controlos Menu e TreeView têm um formato hierárquico. A comunicação entre estes controlos e os nós definidos no ficheiro web.sitemap deve ser feita através do controlo SiteMapDataSource.
SiteMapDataSource • Este controlo é capaz de retornar os dados existentes no ficheiro sitemap sob a forma hierárquica ou sob a forma tabular. O controlo expõe várias propriedades que permitem configurar os resultados devolvidos pela classe <asp:TreeView runat=“server” ID=“tree” DataSourceID=“source” /> <asp:SiteMapDataSource runat=“server” ID=“source” Algumas propriedades: SiteMapProvider - permite definir o provider ShowStartingNode -StratFromCurrentNode StartingNodeOffsetStartingNodeURL
Controlo SiteMapPath • Este controlo consegue obter os dados directamente do provider SiteMap <asp:SiteMapPath runat=“server” ID=“map”/> • Propriedades de estilo: • CurrentNodeStyle, HoverNodeStyle, NodeStyle, PathSeparatorStyle,... • Templates: • CurrentNodeTemplate, NodeTemplate, PathSeparatorTemplate, RootNodeTemplate • O provider XMLSiteMapProvider retorna uma colecção de elementos do tipo SiteMapNodeItem que alimenta os nós do controlo
<asp:SiteMapPath runat=“server” ID=“map”OnItemDataBound=“ProcessDataBound”> <CurrentNodeTemplate> <asp:TextBox runat=“server” ID=“t1” Text=‘<%# Eval(“Title”) %>’ /> </CurrentNodeTemplate> </asp:SiteMapPath> • O controlo gera o evento ItemCreated quando um novo elemento do tipo SiteMapNodeItem é criado e adicionado à colecção do controlo • O evento ItemDataBound é gerado após uma operação de binding entre um elemento do tipo SiteMapNodeItem e o nó respetivo da fonte de dados. • Os dois eventos anteriores são do tipo Site
Criar o Mapa do Site • Criar o ficheiro XML que representa as relações entre todas as páginas da aplicação • Criar um Site MapAdd New Item -> Site Map • Abrir o file web.sitemap e completá-lo <?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="Default.aspx" title="Default Page“description=""> <siteMapNode url="Pagina1.aspx" title="My First Page" description="" /> <siteMapNode url="Pagina2.aspx" title="My Second Page" description="" /> </siteMapNode> </siteMap>
Inserir os controlos de navegação • Os controlos de navegação TreeView e Menu podem ser usados para visuaizar informação hierárquica. • Ambos foram criados para funcionar em vários cenários: • Visualizar informação estática • Visualizar Informação de um site-map • Visualizar Informação de Base de Dados
O controlo Menu • A partr da Toolbox , na secção de Navigation, arrastar o controlo Menu • Em Menu Tasks, em Choose Data Source seleccionar <New Data Source> • No Data Source Coniguration Wizard, seleccionar SiteMap e OK. • Aparece um novo SiteMap no painel
O controlo TreeView • A partr da Toolbox , na secção de Navigation, arrastar o controlo TreeView • Em Menu Tasks, em Choose Data Source seleccionar <New Data Source> • No Data Source Configuration Wizard, seleccionar SiteMap e OK. • Seleccionar Auto FormatExiste uma variedade de estilos • Seleccionar Bullet List e OK • Aparece um novo SiteMap no painel
Segurança através de Roles • O atributo roles do elemento siteMapNode permite indicar quais os roles que podem aceder a um nó. • O provider tem que ter definido o atributo securityTrimmingEnabled com o valor true para que garantir que o nó é apresentado somente a um conjunto de roles. • A utilização de roles implica a activação do serviço de roles. No ficheiro de configuração <rolemanager enabled=“true”/> • Depois é preciso definir as regras de autorização.
Regras de autorização • Definir as regras de autorização para garantir só os acessos autorizados <location path=“/c1/pag1.aspx” allowOverride=“false><system.web> <authorization> <allow roles=“editores”/> <deny users=*,?”/> </ system.web> </location> • Isto garante que o nó é apresentado ao utilzador certo e impede um utilizador de aceder directamente a um recurso (através da introdução directa do link) para o qual não tem auorização