AspNet.sk     Diskusné fóra     Vitajte v QuickStarts     ASP.NET     Silverlight     Ako môžem...? (en)     Class prehliadač Príklady chcem v ...   
Menu
Skip Navigation Links.
Späť na ASP.NET príručku

ASP.NET QuickStart Príručka

Používanie API webovej navigácie

Webové navigačné API sú programovateľnou abstrakciou pre navigačné data, ktoré pristupujú k navigačným dátam použitím konfigurovateľného poskytovateľa. Webový navigačný poskytovateľ oddeľuje detaily datového úložiska navigačných dát od zvyšku API. Webové navigačné API vystavujú navigačné data pomocou tried SiteMap a SiteMapNode. Trieda SiteMap vracia instanciu SiteMapNode, ktorá korešponduje s aktuálnou stránkou. To tiež poskytuje prístup k poskytovateľovi (poskytovateľom), ktorý bol nakonfigurovaný pre Site Navigation. SiteMapProvider má bohaté API na vykonanie nasledujúcej úlohy:
  • Vyberanie instancií SiteMapNode založených na aktuálnom HttpContext alebo na ľubovoľnej URL.
  • Vyberanie rodičovských uzlov alebo potomkov z SiteMapNode.
  • Sprístupnenie SiteMapNode pre aktuálnu stránku, ako aj koreň SiteMapNode celej navigačnej hierarchie.
  • Vynútiť autorizačné pravidlá tak, aby boli vrátené späť od poskytovateľa len tie uzly, ktoré sú viditeľné pre konkrétneho používateľa.
Instancie SiteMapNode vystavujú základné navigačné informácie a závislosti vrátane:
  • Vlastnosti URL, title, a description ako aj vlastné atribúty pridané vývojárom do SiteMapNode
  • Získania rodičov aj potomkov uzlu
  • Navigácie cez súrodenecké uzly pred a za uzlom
  • Získania odkazu na instanciu SiteMapProvider, ktorá vracia uzol
ASP.NET pracuje s poskytovateľom nazvaným XmlSiteMapProvider. Tento poskytovateľ používa dáta z XML súboru (web.sitemap) a vracia instancie založené na týchto dátach. XmlSiteMapProvider má aj nasledujúce možnosti:
  • Viacnásobné súbory sitemap môžu byť spojené do tvaru jednej "virtuálnej" skupiny navigačných dát
  • Viacnasbné instancie XmlSiteMapProvider môžu byť spojené do tvaru jednej "virtuálnej" skupiny navigačných dát
  • Poskytovateľ môže voliteľne filtrovať navrátené uzle, založene na súborovo-autorizačných a URL-autorizačných pravidlách aktuálne platných pre webovú stránku.
Pokiaľ máte referenciu na SiteMapProvider, môžete hľadať navigačné dáta pre špeciálny uzol založený na URL. Toto Vám dovoľuje získať odkazy na instancie SiteMapNode kdekoľvek vo Vaších navigačných dátach. Kombinácia hľadania ľubovoľných instancií SiteMapNode a schopnosti navigácie cez navigačné dáta z akéhokoľvek SiteMapNode Vám umožňuje jednoducho prechádzeť cez Vaše navigačné data.

Ako vývojár si môžete zvoliť ukladanie Vašich navigačných dát do iného datového úložiska (napr.: ako relačné data v databáze). Môžete napísať vlastného poskytovateľa, ktorý bude pochádzať z SiteMapProvider.

Vytváranie aplikačných webových máp

Navigačná štruktúra navigácie webu príručky QuickStart je znázornená v súboroch Web.sitemap. Nižšie je k prezretiu súbor sitemap navigačnej štruktúry celej príručky QuickStart. Súbor Web.sitemap obsahuje jednoduchý element najvyššieho stupňa (top-level) <siteMap>. Do elementu <siteMap> musí byť vnorený aspoň jeden element <siteMapNode>. Vždy musí existovať koreňový uzol <siteMapNode> v mape webu. Webová navigačná funkcia požaduje jediný koreň <siteMapNode> na zabezpečenie, že ide o hierarchiu uzlov, ktoré sa zaručene napokon zbiehajú do jediného, dobre známeho uzlu. Podľa potreby môžete do koreňového elementu <siteMapNode> vnoriť ľubovoľné množstvo elementov <siteMapNode>. Dokonca môžete vnorovať elementy <siteMapNode> do ľubovoľnej hĺbky.

Jednotlivé elementy <siteMapNode> obyčajne obsahujú atribúty Url, Title a Description. Atribút Url obsahuje virtuálnu cestu ku stránke Vašej aplikácie. Ale taktiež tu môže byť definovaná aj cesta na stránku inej aplikácie alebo URL odkazujúce na úplne odlišné webové sídlo. V ukážke nižšie, používajú všetky atribúty Url aplikačne-relatívnu syntax na odkazovanie ciest vo vnútri apikácie QuickStart. Atribút Title je použitý ako zobrazený text pri vytváraní UI pre navigačné data. Napríklad, ovládací prvok SiteMapPath používa atribút Title na vytváranie textu hypertextového odkazu v ovládacom prvku. Ak je prítomný aj atribút Description, serverové ovládacie prvky ho môžu využiť na zobrazenie napr. ALT textov. Ale vývojár môže samozrejme pridať aj vlastné atribúty do <siteMapNode> a tieto atribúty budú k dispozícii základnému zostavovateľovi indexov na triedu SiteMapNode. Pre informácie o iných podporovaných atribútoch elementu <siteMapNode> pozrite dokumentáciu .NET Framework.

Príklad Web.sitemap
Run Sample View Source

Triedy webovej navigácie

Navigačné dáta môžete získať aj programovo v kóde. Začiatočným bodom pre získavanie webových navigačných dát programovo je trieda SiteMap. V tejto triede sa nachádzaju rôzne statické metódy. Najdôležitejšia je existencia vlastnosti CurrentNode. Na hociktorej stránke Vášho webového sídla sa môžte volať SiteMap.CurrentNode pre odkazovanie sa na časť navigačných dát zodpovedajúcich práve vykonávanej stránke. Navigačné dáta sa vracajú ako instancie SiteMapNode - ak voláte SiteMap.CurrentNode, táto vlastnosť vracia instanciu SiteMapNode korešpondujúcu s aktuálnou stránkou. Webová navigačná funkcia určuje na vrátenie korektný uzol založený na navigačných dátach, ktoré sú uložené v XML súbore.

Nasledujúci príklad ukazuje uživateľský ovládací prvok s jednoduchým stránkovaním. Užívateľský ovládací prvok sa vytvára v strede na spodku zobrazovanej stránky. Spočiatku je tam odkaz [Ďalšia stránka]. Ak kliknete na tento odkaz, užívateľský ovládací prvok zavolá objekt SiteMap na zistenie, či okolo aktuálnej stránky sú alebo nie sú ďalšie súrodenecké stránky. Kód uskutočňuje toto zistenie pomocou vlastnosti SiteMap.CurrentNode (predchadzajúci súrodenec - SiteMap.CurrentNode.PreviousSibling, nasledujúci súrodenec - SiteMap.CurrentNode.NextSibling). Uživateľský ovládací prvok, na základe existencie týchto súrodencov, generuje hypertextové odkazy, nastavuje pre každý hypertextový odkaz špecificky vlastnosť NavigateUrl na hodnotu vlastnosti Url súrodeneckého uzlu.

Všimnite si ako užívateľský ovládací prvok automaticky zobrazuje príslušné odkazy [Ďalšia stránka] a [Predchádzajúca stránka] po kliknutí na rôzne odkazy prvku TreeView na ľavej strane stránky. Užívateľský ovládací prvok generuje taktiež aj odkaz, ktorý Vás po kliknutí naň vráti späť na domovskú stránku. Ak sa pozriete na zdrojový kód ako je tento hypertextový odkaz generovaný, zistíte, že ovládací prvok používa vlastný atribút na element <siteMapNode> domovskej stránky nazvaný "customAttribute". Tento ovládací prvok demonštruje ako používať predvoleného zostavovateľa indexov elementu SiteMapNode k obnoveniu hodnoty tohto vlastného atribútu.

VB SiteMap API
Run Sample View Source

Bezpečnosť webovej navigácie

Webová navigačná funkcia môže voliteľne filtrovať instancie SiteMapNode vrátené poskytovateľom, založené na autorizačných pravidlách. Poskytovateľ XmlSiteMapProvider môže filtrovať uzle založené na súborových a URL autorizačných pravidlách, ktoré sú aplikované na aktuálne webové sídlo.

Následujúci príklad používa formulárovú autentifikáciu s preddefinovanými uživateľskými osobnými údajmi uloženými vo web.config. V global.asax sú úlohy pripojené k bežnej požiadavke založenej na užívateľskom mene. Atribút securityTrimmingEnabled elementu <siteMap> v súbore web.config musí byť nastavený na true. Súbor web.config tiež definuje na spodku súboru aj počet URL autorizačných pravidiel. Pokiaľ spustíte príklad a prihlásite sa, XmlSiteMapProvider automaticky vykoná autorizačnú kontrolu pre každý SiteMapNode založenej na kombinácií pravidiel patriacich užívateľovi a autorizačných pravidiel definovaných v web.config.

Vyskúšajte beh programu s následujúcimi troma užívateľskými kontami:
  • Užívateľské ID: SectionOne    Heslo: SectionOne
  • Užívateľské ID: SectionTwo    Heslo: SectionTwo
  • Užívateľské ID: AllSections     Heslo: AllSections
V pravom hornom rohu je hypertextový odkaz pre odhlásenie, takže sa možte prihlasovať a odhlasovať pod rôznymi kontami. Všimnite si ako zaleží pod ktorým kontom ste prihlasený. Navigačné UI zobrazované ovládacími prvkami Treeview a Menu automaticky menia URL podľa každého užívateľa, ktorý je autorizovaný k prístupu. Poskytovaťeľ automaticky filtruje vrátené uzle - pre tento režim nie je požadovaný žiaden extra kód. Prihlásením ako užívateľ "SectionOne" sú výsledkami len hypertextový odkaz pre "SectionOne" a vonkajšie hypertextové odkazy zobrazené v ovládacom prvku TreeView na ľavej strane. Prihlásením ako užívateľ "SectionTwo" su výsledkami len hypertextový odkaz pre "SectionTwo" a vonkajšie hypertextové odkazy zobrazené v ovládacom prvku TreeView na ľavej strane. Prihlásením ako užívateľ "AllSelections" sa zobrazia všetky odkazy v ovládacom prvku TreeView. Autorizačné pravidlá v web.config sú konfigurované na pridelenie selektívneho prístupu k URL hierarchiám "SectionOne" a "SectionTwo".

Tento príklad tiež demonštruje ako pracuje bezpečnostná úprava s URL, ktoré sú mimo priečinka aplikácie. V súbore web.sitemap je atribút roles použitý na uzly pre externé odkazy. Syntax roles="*" poskytuje všetkým užívateľom právo obnoviť a zobraziť uzly v navigačnom ovládacom prvku. Syntax roles="Adminstrators,Regular Users" povoľuje právo obnoviť a zobraziť uzle v navigačnom ovládacom prvku len týmto užívateľom týchto rolí. Odkedy súbor global.asax pridelí užívateľov v tomto priklade k jednej z týchto dvoch rolí, vždy budete mať prístup k prezeraniu externých odkazov.

Vývojári majú možnosť použiť oboje súborové/URL autorizačné pravidlo a atribút roles, aby kontrolovali prístup do instancií SiteMapNode. Keď sú oba súbory informácií dostupné, poskytovateľ webovej navigácie sa pokúsi autorizovať aktuálneho užívateľa podľa oboch - súborových/URL autorizačných pravidiel podľa úloh v atribúte roles. Keď aktuálny užívateľ prejde cez obe autorizačné kontroly je mu garantovaný prístup k uzlu.

Keď nie je základné nastavenie ochrany vhodné pre Vašu aplikáciu, vývojár môže dediť z XmlSiteMapProvider a prepísať metódu IsAccessibleToUser vlastnou implementáciou pre uzlovú autorizáciu.

VB Webová navigačná bezpečnosť
Run Sample View Source

Lokalizácia dát webovej navigácie

Navigačné dáta uložené v súbore sitemap je potrebné lokalizovať. Atribúty URL, Title, a Description v elemente <siteMapNode> môžu byť všetky lokalizované. Okrem toho, všetky vlastné atribúty, ktoré vývojár umiestni do elementu <siteMapNode> môžu byť taktiež lokalizované.

Príklad obsahuje lokalizované texty pre uzol v angličtine a francúzštine. Súbor web.sitemap používa dva typy lokalizačných výrazov aby vykonal nasledovné: implicitné a explicitné výrazy. Pre bližšie informácie o lokalizačných základoch, ako aj o pozadí informácií o dvoch typoch lokalizáčných výrazov, pozrite tému "Localizovanie Vašej aplikácie" v príručke Quickstart. Súbor sitemap indikuje, že používa lokalizované dáta za prítomnosti enableLocalization=true koreňového elementu siteMap.

Výrazy zahrnuté v súbore sitemap uľahčujú vývojárovi označiť každý element <siteMapNode> kľúčom, ktorý bude použitý na získanie zdrojov zo zdrojového súboru. V príkladovom web.sitemap, implicitne zdrojové výrazy sú v každom uzle vyňaté ako prvé. Syntax vyzerá takto: resourceKey="Autos". Keď XmlSiteMapProvider získava SiteMapNode založené na informáciach v súbore web.sitemap, hľadá zdroje založené na kombinácii mena vlastnosti SiteMapNode, resourceKey a hodnoty atribútu siteMapFile konfigurovaného pre poskytovateľa. Použitím uzlu "Autos", bude poskytovateľ hľadať v zdrojovom súbore, ktorý začína na "web.sitemap" založenej na aktuálnej kultúre. To znamená pre prehliadač, že pošle hlavičku s francúzštinou, poskytovateľ bude hľadať zdrojový súbor s názvom web.sitemap.fr.resx. Bez zdrojového súboru bude poskytovateľ hľadať zdrojový kľúč, ktorého meno je založené na resourceKey + "." + [meno vlastnosti SiteMapNode]. Napríklad použitim vlastnosti Title pre uzol "Autos", bude poskytovateľ hľadať zdroj, ktorého kľúč Autos.Title je vnútri zdrojového súboru web.sitemap.fr.resx.

Explicitné výrazy dávajú vyvojárovi viac kontroly nad súbormi, ktoré obsahujú lokalizované zdroje ako aj meno zdrojového kľúča. Napríklad web.sitemap, explicitný zdrojový výraz je použitý pre prvý element <siteMapNode>. Explicitné výrazy sú špecifikované na pre- atribučnom základe. Prvý element <siteMapNode> používa explicitný výraz pre atribút Title. Explicitný výraz musí vždy začať s $resource: . Po tomto identifikátore, vývojár musí poskytnúť koreňové meno pre zdrojový súbor ako aj pre zdrojový kľúč. Obyčajne určuje vývojár aj štandardnu hodnotu. Napríklad, výraz $resources: Title, MyTitle, Home indikuje, že by sa poskytovateľ mal pozrieť do zdrojového súboru, ktorý začina na "Title". Pre prehliadač, ktorý pošle hlavičku s francúzštinou, poskytovateľ by pohľadal zdrojový súbor nazvaný Title.fr.resx. Poskytovateľ by potom pohľadal zdroj, ktorého kľúč je MyTitle. Keď nemôže poskytovateľ nájsť taký zdroj, ustúpi a použije "Home" ako štandardnú hodnotu.

Aby ste videli efekty lokalizácie sitemap spustite príklad. Prehliadače, ktoré indikujú angličtinu ako základný jazyk, zobrazia vrátený anglický text. Keď používate IE, môžete zmeniť základný jazyk, ak otvoríte ponuku Tools-->Internet Options (Nástroje-->Možnosti siete internet) a vyberiete tlačidlo "Languages(Jazyky...)" v záložke "General(Všeobecné)". Kliknite na tlačidlo "Add(Pridať...)" a vyberte "French (France) [fr]". Pokiaľ je nutné vyberte francúzsky jazyk a kliknite na "Move Up(Posunúť nahor)" aby ste nastavili základný jazyk vracaný IE. Po zmene základného jazyka na francúzštinu obnovte tú istú stránku. Skontrolujte, že texty v ovládacích prvkoch Menu, Treeview and SiteMapPath sa automaticky zmenili a presmerovali na francúzsky text uložený vo francúzskom zdrojovom súbore uloženom v priečinku App_GlobalResources.

VB Lokalizácia Sitemap
Run Sample View Source

Modifikovanie dát webovej navigácie

Navigačné dáta obsiahnuté v web.sitemap, ktoré používa XmlSiteMapProvider sú statické - dáta sú nahrané do pamäte a uložené ako dáta len na čítanie. Hoci väčšina stránok má navigačnú štruktúru, ktorá je parametrizovaná na základe QueryString reťazcov. Napríklad, informačná stránka môže mať dobre-definovanú štruktúru strán (t.j. domovská stránka, stránka nových kategórií a stránka nových vydaní), ale aktuálny obsah sa bude meniť v závislosti na identifikátoroch QueryString reťazca. Je možné uložiť všetky možné permutácie QueryString reťazcov do elemenov <siteMapNode>, no pre každý možný QueryString reťazec môže sitemap obsahovať stovky či tisíce elementov <siteMapNode>.

Funkcia stránkovej navigácie disponuje udalosťou SiteMapResolve v základnej triede SiteMapProvider. K události môže byť vytvorený použitím oboch SiteMap.SiteMapResolve alebo opätovne priamymi individuálnymi poskytovateľmi používajúcimi SiteMap.Provider.SiteMapResolve. Vrátená hodnota z udalosti je instanciou SiteMapNode. Vo Vašom spracovávači udalosti (event handler) môžete napísať vlastnú logiku ako vytvoriť hierarchiu instancií SiteMapNode. Táto logika môže modifikovať vlastnosti na každom SiteMapNode tak, že vlastnosť ako URL a Title zobrazuje dodatočnú informáciu založenú na dátach prevzatých z QueryString reťazcov.

Príklad nižšie registruje event handler v global.asax. Kód pre event handler je v triede umiestnenej v priečinku App_Code. Vlastná trieda spraví kópiu instancie SiteMapNode korešpondujúcej s aktuálnou stránkou. Kým sú uzly v XmlSiteMapProvider len na čítanie, volaním metódy Clone na SiteMapNode je vrátená zapisovateľná instancia uzlu. Napríklad metóda Clone vracia hodnotu true, ktorá pôsobí v zapisovateľnej kópii aktuálneho SiteMapNode tak ako aj vo všetkych rodičovských uzloch. Zvyšok kódu v triede dohliada na aktuálnu stránku a jej QueryString reťazce aby zistil, kde v stránkovej hierarchii je aktuálna stránka umiestnená. Kód upravuje vlastnosti URL a Title zahrnutím dodatočnej informácie tak, že navigačné UI vytvorené ovládacím prvkom SiteMapPath odráža aktuálnu click-path webového sídla, pre dosiahnutie aktuálnej stránky užívateľom.

Keď spustíte príklady, budete spočiatku na domovskej stránke aktuálnej stránky. Ovládací prvok SiteMapPath to takto zobrazí. Kliknutím na obe adresy Vás dovedie do kategórie stránky, ktorá zobrazuje adresy k novinovým článkom podľa špecifickej kategórie. Všimnite si, keď prejdete cez poslednú adresu v ovládacom prvku SiteMapPath, URL sa zobrazí v lište prehliadača zahrňujúc QueryString reťazec špecifikovaný podľa typu kategórie novynových článkov. Kliknutie na jednu z umiestnených adries Vás zavedie na stránku s aktuálnymi novinovými článkami. Keď prejdete cez adresy v ovládacom prvku SiteMapPath, všimnite si, že posledné dve adresy v ovládacom prvku majú URLs a Titles ktoré obsahujú správne QueryString reťazce a popisné informácie založené na clickpath. Keď sa vraciate spät na domovskú stránku skúste kliknúť na ostatné súbory novinkových skupiny a v nich obsiahnuté adresy, a opäť si všimnite, ako sa ovládací prvok SiteMapPath aktualizuje, aby zobrazil druhý súbor adries, na ktoré ste klikli.

VB Používanie udalosti SiteMapResolve
Run Sample View Source
Microsoft .NET Framework SDK QuickStart Tutorials Version 2.0
Copyright © 2005 Microsoft Corporation. All rights reserved.
Preklad do slovenského jazyka - Copyright © 2005 - 2007 www.aspnet.sk, www.qsh.sk
Pošlite komentár k tejto stránke
Copyright © 2002 - 2008 Chastia, spol. s r. o., Igor Stanek, Designed by Lacino
Portál je hostovaný na serveroch firmy Quantasoft - www.qsh.sk.