|
|
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
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
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ť
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
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
|
|