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

Tipy a triky

Novinky v 2.0

  • Odosielanie medzi stránkami (Cross Page Posting) - ASP.NET 2.0 Vám povoľuje spätne odosielanie z jednej stránky na druhú a môže získať hodnoty zdrojovej stránky z cieľovej stránky.
  • Ovládací prvok Wizard - Ovládací prvok wizard Vám dovoľuje do Vašich stránok jednoducho pridať scenáre viac-krokového vstupného formulára (multi-step form entry scenarios).
  • Validačné skupiny - Validačné skupiny dovoľujú viacerým formulárom na stránke byť validovanými oddelene.
  • Focus API - Focus API Vám dovoľuje nastaviť zameranie na hocijaký ovládací prvok na stránke, špecifikovať predvolené tlačidlá (submit) pred vstupné ovládacie prvky (input controls), a viac.
  • Poskytovatelia vytvorenia kompilácii - ASP.NET 2.0 obsahuje podporu kompilovanie deklaratívnych súborových formátov, ak sú umiestnené v adresári the App_Code.
  • Nekompilované stránky - Stránky v ASP.NET 2.0 je možné vyňať z kompilačného procesu, aby boli namiesto toho interpretované počas behu programu.
  • Zabezpečenie ne-ASP.NET obsahu - Pod IIS 6 môžete jednoducho zabezpečiť ne-ASP.NET súbory (non-ASP.NET files) ako statické obrázky alebo klasické ASP stránky znútra ASP.NET aplikácie.
  • Funkcie klientského skriptovania (Client-Script Features) - ASP.NET 2.0 obsahuje niekoľko nových funkcii, ktoré využívajú skripty na strane klienta.
Táto časť opisuje tipy a triky pre používanie niekoľkých nových funkcií v ASP.NET 2.0.

Cross Page PostBack

Štandardne sú tlačidlové ovládacie prvky na ASP.NET stránkach spätne odosielané na rovnakú stránku, ktorá obsahuje tlačidlo, kde môžete pre odosielanie napísať event handler. V mnohých prípadoch je toto očakávaným správaním, ale príležitostne Budete taktiež chcieť odosielať na ďalšiu stránku vo Vašej aplikácii. Metóda Server.Transfer môže byť použitá na pohyb medzi stránkami, avšak URL sa nezmení. Namiesto toho Vám funkcia odosielanie pomedzi stránkami v ASP.NET 2.0 dovolí odštartovať normálny postback na ďalšiu stránku Vašej aplikácie. V cieľovej stránke môžete potom pristupovať k hodnotám serverových ovládacích prvkov v zdrojových stránkach, ktoré iniciovali postback.

Pre používanie odosielania medzi stránkami môžete nastaviť vlastnosť PostBackUrl ovládacích prvkovButton, LinkButton alebo ImageButton , ktorá špecifikuje cieľovú stránku. V cieľovej stránke môžete potom pristúpiť k vlastnosti PreviousPage pre vyvolanie hodnôt zo zdrojovej stránky. Štandardne je PreviousPage vlastnosťou Page, takže musíte pristúpiť k ovládacím prvkom použitím metódy FindControl. Môžete taktiež povoliť silne typový prístup k zdrojovej stránke nastavením direktívy @PreviousPageType v cieľovej stránke na virtuálnu cestu alebo typ na zdrojovej stránke. Všimnite si, že keď máte v úmysle pre viaceré stránky odosielať na jednu cieľovú stránku, nemôžete použiť silne typový prístup (nechať direktívu PreviousPage neurčenú).

VB Cross Page PostBack
Run Sample View Source

Cross page posting funguje nasledovne:
  • Cross page posting nastavuje akcie formulára v Page 1
  • Po kliknutí na Button ide pošta (post) od Page 1 do Page 2
  • Page 2 zachytáva viewstate z Page 1
  • Po pristúpení k PreviousPage je viewstate opätovne osídlený (re-populated) do inštancie Page 1
  • Page 1 sa následne spracuje až do svojej fázy LoadComplete (vynímajúc prevádzanie)
  • V tomto okamihu môže Page 2 pristúpiť k hodnotám ovládacích prvkov z Page 1
Pretože Page 1 sa spracuje (až do LoadComplete) ako odozva na cross-page post, niekedy je potrebné (to special-case code) V stránke pre spustenie len, keď požiadavka nie je cross-page post, ale namiesto toho normálnou požiadavkou na Page 1. Pre spracovanie tejto situácie môžete použiť vlastonosť IsCrossPagePostBack v Page 1.


If Not Page.IsCrossPagePostBack Then
    ' handle a normal request
End If
VB

Taktiež môžete spraviť postback do inej aplikácie, avšak vlastnosť PreviousPage je v tomto prípade null. Taktiež môžete presunúť kód (transfer in code), počas stáleho zachovávania viewstate pomocou vlastnosti PreviousPage použitím Server.Transfer(IHttpHandler, preserveViewState).

Ovládací prvok Wizard

Ovládací prvok Wizard sa používa pre vytvorenie viac-krokového vstupného formulára (multi-step form entry process) na webovej stránke. Pre špecifikovanie jednotlivých krokov umiestnite objekt WizardStep pre každý vstup (entry) medzi otvárací a uzatvárací tag elementu WizardSteps ovládacieho prvku Wizard. Je mnoho výhod ovládacieho prvku Wizard:

  • Jednoduché povolenie viac-krokových formulárov a dátových kolekcii
  • Spracováva všetky navigačné aspekty, lineárne alebo nelineárne
  • Povoľuje commit-at-finish alebo commit-as-you-go (AllowReturn=false)
  • Ovládacie prvky automaticky obdržia viewstate pomedzi správy k rôznym krokom (across posts to different steps)
  • Môže využiť vstavané užívateľské rozhranie alebo sa prispôsobí cez vlastnosti alebo šablóny
VB Ovládací prvok Wizard
Run Sample View Source

Validačné skupiny

Môžete použiť vlastnosť ValidationGroup, keď chcete uskutočniť oddelené validačné scenáre na tej istej stránke. Na validačných ovládacích prvkoch a na tlačidle alebo inom postback ovládacom prvku nastavte meno skupiny, ktorá zapríčiňuje validáciu. Je to výhodné pri ovládacích prvkoch Wizard, MultiView alebo dátových ovládacích prvkoch (pre editáciu scenárov). Pre povolenie validačných skupín nastavte túto vlastnosť na rovnakú hodnotu pre všetky validátory, ktoré majú patriť do rovnakej skupiny. V ovládacom prvku Button vo formulári s CausesValidation nastavenou na true môžete taktiež nastaviť vlastnosť ValidationGroup na meno skupiny, ktorá má byť validovaná po kliknutí na tlačidlo. Štandardne patria všetky validátory pre spätnú kompatibilitu do skupiny "" (prednastavená skupina). Objekt Page taktiež vystavuje metódu GetValidators("group") a metódu Validate("group") pre vyvolanie súboru validátorov v špecifickej skupine. Page.IsValid odzrkadľuje (súhrnu) platnosť všetkých ovládacích prvkov, ktoré zavolali Validate.

Následujúci príklad ukazuje vlastnosť ValidationGroup. Pre prezretie si správania sa, kliknite na prvé tlačidlo na stránke (Search), potom kliknite na druhé tlačidlo na stránke. Všimnite si, že sa po každom kliknutí spúšťa iná skupina validátorov.

VB Validačné skupiny
Run Sample View Source

Focus API a DefaultButton

Focus API Vám dovoľuje sa deklaratívne alebo programovo zamerať na špecifické ovládacie prvky vo formuláry. Môžete použiť metódu Page.SetFocus na vydanie ID ovládacieho prvku, ktorý by mal byť zameraný fokus alebo môžete priamo na ovládací prvok zavolať metódu Focus. Taktiež môžete nastaviť metódu DefaultFocus z elementu Form na ID ovládacieho prvku, ktorý by mal byť zameraný fokus pri prvom načítaní stránky. Podobne ako s DefaultFocus môžete nastaviť vlastnosť DefaultButtonz elementu Form na ID ovládacieho prvku Button, ktorý má submit, keď je stlačená klávesa Enter vo vnútri niektorého zo vstupných ovládacích prvkov vo formulári. Ak by mala Vaša stránka mať rozdielne prednastavené tlačidlá závislé od vstupných ovládacích prvkov, aké má súčasné zamerania, môžete obaliť určité vstupné ovládacie prvky do ovládacieho prvku Panel a namiesto toho nastaviť Panelu vlastnosť DefaultButton. Každý vstupný ovládací prvok v Paneli použije pre podanie formulára vlastnosť DefaultButton, keď je stlačené tlačidlo Enter v rámci vstupného ovládacieho prvku (input control). Validačná funkcia, ktorá je závislá na Focus API, má hodnotu SetFocusOnError(A validation feature that depends on the Focus API is SetFocusOnError), ktorá je nastavená vo validačných ovládacích prvkoch, aby zapríčinila zameranie prvého neplatného ovládacieho prvku(to cause the first invalid control to receive focus). Nasledujúci príklad ukazuje vlastnosti Focus API, DefaultButton, DefaultFocus a SetFocusOnError pri použití na jednom formulári.

VB Focus API, DefaultButton, DefaultFocus a SetFocusOnError
Run Sample View Source

Pre zložitejšie ovládacie prvky nastavuje metóda Focus zameranie štandardne na prvý zamerateľný ovládací prvok zo zložitejších ovládacích prvkov, ale jednotlivé ovládacie prvky môže toto správanie kvôli nastaveniu zamerania na iný element preťažiť. Tento príklad ukazuje zameranie danú prvému vstupnému ovládaciemu prvku v DetailsView, ak je zavolaná metóda Focus v prípade, že DetailsView je v editačnom režime.

VB DetailsView Focus
Run Sample View Source

Poskytovatelia vytvorenia kompilácii

Poskytovateľ vytvorenia kompilácii v ASP.NET 2.0 je typom, ktorý je registrovaný "kompilovať" alebo "budovať (build)" deklaratívne súborové formáty do niečoho čo môže byť použité vo Vašich stránkach. Zabudovaný poskytovateľ je zaregistrovaný v nastaveniach a priradený k špecifickej prípone súboru. Keď sú súbory s touto príponou umiestnené do adresári App_Code, ASP.NET vyvolá registrovaného stavajúceho poskytovateľa, aby skompiloval súbor. ASP.NET 2.0 obsahuje podporu pre niektorých poskytovateľov alebo si môžete taktiež vytvoriť a zaregistrovať Vaše vlastné typy (pre viacej informácii pozrite sekciu Rozširovanie ASP.NET). V porovnaní so súbormi štandardných tried vo viacerých jazykoch môžu byť nasledujúce typy automaticky skompilované do ASP.NET:
  • .wsdl - vytvorí proxy objekt webovej služby (Web Service proxy object)
  • .resx - vytvorí zdrojový súbor, ktorý môže byť použitý na lokalizáciu
  • .xsd - vytvorí silne typový objekt DataSet

Nekompilované stránky

Nekompilované stránky povoľujú zlepšené upravovanie mierky (scaling) pre obrovksé sídla s tisíckami stránok, kedže okná majú limitovaný počet DLL knižníc načítaných do aplikácie a bezchybnosť sa znižuje ako sa blížite k limitu. Nastavte direktívu <%@ Page CompilationMode="Auto" %> na podmienečné kompilovanie pre získanie (scaling benefits) bez limitou na kóde. Môžete taktiež nastaviť CompilationMode na "Never", aby ste zabránili stránky v kompilácii. Túto vlastnosť môžete nastaviť v sekcii <pages/> v Web.config, aby bola táto vlastnosť aplikovaná na všetky stránky aplikácie. Nekompilovaná stránka vyhodí chybu, ak obsahuje užívateľský kód. Avšak stále môžete používať deklaratívnu syntax ASP.NET ako sú dátové prepojenia (data bindings) (iba <%# Eval %> a <%#Bind %>) a výrazy ako <%$ ConnectionStrings:Pubs %>.

VB Nekompilované stránky (No Compile Pages)
Run Sample View Source

Vlasnosť CompilationMode sa aplikuje iba na stránky, ale stále môžete typy z vnútra adresára Code (napríklad základné triedy pre stránky). Ak preferujete, aby mali neskopilované stránky vyňatý prístup ku skomplilovaným typom z adresára Code, uzamknite tento adresár v nastaveniach.

VB Neskomplilovaná stránka so základnou triedou
Run Sample View Source

Doplnkovým vybavením je predbežný kompilačný nástroj (pre-compile tool), aspnet_compiler.exe, ktorý Vám dovoľuje predbežne skompilovať (pre-compile) celé sídlo využitím príkazového riadku, pre ochránenie Vašich intelektuálneho vlastníctva (kódu) na stránkach a povoľuje uverejnenie bez následnej kompilácie.

Zabezpečenie ne-APS.NET súborov (Securing Non-ASP.NET files)

ASP.NET spracováva požiadavky pre súborové prípony, ktoré sú normálne asociované s ASP.NET, zatiaľ čo IIS spracováva požiadavky pre všetky ostatné súborové prípony. Štandardne to znamená, že bežné súborové prípony ako .aspx a .asmx sú spracovávané ASP.NET-om. Toto spracovávanie zahŕňa autentifikáciu a autorizáciu ASP.NET súborov. I keď niekedy chcú vývojári, aby boli ne-ASP.NET zdroje spracovávané ASP.NET-om. Jednou s príčin pre tento úkon je dovoliť, aby ASP.NET autentifikácia a autorizácia kontrolovala prístup k týmto typom súborov.

Kombinácia IIS6 na Windows Server 2003 a ASP.NET 2.0 poskytuje najväčšiu flexibilitu, pre beh ASP.NET ako časť spracovania požiadavky pre ne-ASP.NET zdroj. IIS6 obsahuje podporu, ktorá dovoľuje ASP.NET 2.0 vykonať autentifikačné a autorizačné kroky, a potom vrátiť zostatok (hand off the remainder) zo spracovania ne-ASP.NET zdroja späť do IIS6. Je napríklad môožné autentifikovať prístup ku ASP stránke použitím autentifikácie ASP.NET formulárov, autorizovaného prístupu s ASP.NET Url autorizáciou a zároveň povoliť ASP ISAPI rozšíreniu (asp.dll) spracovať ASP stránku. Táto podpora je možná, pretože IIS6 uviedla nové podporovacie serverové funkcie pre ISAPI rozšírenie: HSE_REQ_EXEC_URL.

Zoberme si, že adresárová štruktúra obsahuje zmes ASP a ASP.NET súborov. ASP.NET stránky sa používajú na prihlásenie užívateľa využitím formulárovej autentifikácie (forms authentication), zatiaľ čo ASP stránky reprezentujú zvyšok aplikácie. Pri použití IIS6 MMC, kliknite pravým tlačidlom na adresár a vytvorte aplikáciu (toto je rovnaký krok, ktorý je potrebný pri nastavovaní štandardnej ASP.NET aplikácie). Po vytvorení aplikácie , kliknite na tlačidlo Configuration, ktoré sa nachádza na (Directory property page). To zapríčiní zobrazenie dialógového okna (dialog) Application Configuration. Novinkou v IIS6 je funkcia nazvaná wildcard application mapping. Spodná časť dialógového okna Application Configuration Vám dovoľuje túto možnosť nastaviť.

Najprv určite cestu pre rozšírenie ASP.NET ISAPI, ktoré spracováva ASP.NET súbory ako sú .aspx súbory. Túto cestu môžete nájsť pohľadom na prípony zoradené v zozname Application Extensions, ktorý sa nachádza v hornej polovici dialógového okna (dialog) Application Configuration. Kliknite na riadok v zozname, ktorý mapuje prípony .aspx a stlačte tlačidlo (Upraviť) Edit. V dialógovom okne, ktoré vyskočí (pops-up) vyznačte text v textboxe Executable a skopírujte ho do prechodnej pamäti. Potom zrušte dialógové okno.

Potom kliknite na tlačidlo (Vložiť) Insert, ktoré sa nachádza v dolnej polovici dialógového okna Application Configuration. Zobrazí sa dialógové okno pomenované Add/Edit Application Extension Mapping. Do textboxu Executable vložte cestu k rozšíreniu ASP.NET ISAPI, ktoré ste si predtým pridali do prechodnej pamäte. Konečný výsledok by sa mal podobať na screenshot nižšie.



Pre zatvorenie všetkých dialógových okien stlačte OK. Keď je odteraz vytvorená požiadavka na každý zo súborov, bude požiadavka najprv spracovaná ASP.NET-om. Ak web.config pre Vašu ASP.NET aplikáciu povolil formulárovú autentifikáciu (forms authentication), tak neautorizovaná požiadavka .asp súbor najprv spustí presmerovanie prihlasovaciu stránku (login page) nastavenú pre formulárovú autentifikáciu (forms authentication). Po úspešnom prihlásení bude užívateľ presmerovaný späť na originálnu .asp stránku. Keď už-autentifikovaný si užívateľ (now-authenticated user) vyžiada .asp stránku, tak ASP.NET najprv prejde cez FormsAuthenticationModule, aby si overil existenciu a platnosť cookie formulárovej autentifikácie (forms authentication cookie). Aj prejde touto kontrolou, tak ASP.NET vráti spracovanie .asp stránky späť do IIS6, pričom IIS6 prepošle požiadavku na rozšírenie ISAPI, ktoré za normálnych okolností spracováva .asp stránky. V tomto prípade je rozšírením asp.dll (the extension is asp.dll) a ASP stránka nude potom trvať kým nedosiahne koniec (will then run to completion). Dôvod ASP.NET, prečo vráti požiadavku späť na IIS6 je, že ne-ASP.NET zdroje neprejdu zoznamom nakonfigurovanom v <httpHandlers> kvôli nasledujúcemu záznamu (to the following entry):
<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
DefaultHttpHandler je zodpovedný za spracovanie požiadaviek späť na IIS6 pre ďalšie procesovanie.

Podobný postup s nejakými obmedzeniami je k dispozícii pre IIS5 a IIS5.1. Tieto IIS verzie požadujú, že pre každú súborovú príponu, ktorú chce vývojár procesovať ASP.NET-om, musí byť do zoznamu Application Extensions, ktorý bol už spomenutý skôr, pridané explicitné mapovanie ASP.NET ISAPI rozšírenia. Druhým obmedzením je, že IIS 5.x nedovoľuje, aby bola požiadavka vrátená z ASP.NET späť do IIS 5.x. Ako výsledok môžu byť ASP.NET-om efektívne chránené iba statické súbory požadované (GET verb). Po spracovaní prvej časti (ASP.NET pipeline) (ktorá obsahuje autentifikáciu a autorizáciu), ASP.NET spracuje zdroje použitím optimalizovaného StaticFileHandler, ako sa pokúšať o vrátenie požiadavky spať do IIS 5.x. Pokusy spracovať (POST verb) alebo si vyžiadať .asp súbory vyústia do chybovej hlášky 405 (neplatná metóda), resp. 403 (neprístupné: prístup zamietnutý).

Funkcie klientského skriptovania (Client-Script Features)

ASP.NET 2.0 obsahuje množstvo funkcii, ktoré sa spoliehajú na skripty na strane klienta v prehliadači(rely on client-side script in the browser). Napríklad vlastnosť OnClientClick ovládacieho prvku Button Vám dovoľuje programovo spustiť skript na strane klienta (client-side script), ak je stlačené tlačidlo (Button). Tlačidlo (Button) (renders) atribút na strane klienta onclick spolu s vlastným javascript-om tlačidla (button's own javascript).

VB Udalosť ClientClick
Run Sample View Source

Sú prípady, keď si aplikácia vyžaduje, aby pozícia stránky v prehliadači zotrvala po (post-back) na server. Napríklad ak dátová položka zapríčiňuje postback vo veľkej stránke, koncový užívateľ by sa potreboval preskrolovať (scroll) na pozíciu, ktorú editoval, aby mohol ďalej pokračovať. Vývojári stránok môžu jednoducho označiť svoje formuláre pre udržiavanie naskrolovanej pozície nastavením vlastnosti MaintainScrollPositionOnPostBack na hodnotu true v direktíve @Page alebo nastavením tejto vlastnosti vo Web.config, pre použitie tejto vlastnosti na všetky stránky aplikácie.

VB Maintain Scroll Position
Run Sample View Source

Novou vzrušujúcou funkciou pre ovládacie prvky sú Client-side CallBacks, ktoré dovoľujú ovládaciemu prvku spustiť požiadavku späť na server pre získanie dodatočných dát, bez odosielania celej stránky. Táto funkcia sa spolieha na podporu prehliadača spracovanie (zvyčajne cez XMLHTTP), ktorá je špecifikovaná vlastnosťou SupportsClientCallbacks v schopnostiach prehliadača (as specified by the SupportsClientCallbacks property in browser capabilities).

Ovládací prvok TreeView využíva výhody tejto funkcie pre povolenie , ak je rodičovský uzol rozvinutý u klienta . GridView a DetailsView taktiež využívajú výhody tejto funkcie pre implementovanie stránkovania a triedenia, ak EnableSortingAndPagingCallbacks nastavená na hodnotu true. Ovládací prvok sa zaregistruje sám, pritom ako je schopný prijímať udalosti implementovaním rozhrania ICallbackEventHandler. Toto rozhranie dovoľuje stránke vyvolať registrovaných zástupcov pre vrátenie dát klientovi. Sú dve metódy rozhrania ICallBackHandler, RaiseCallbackEvent a GetCallbackResult. RaiseCallbackEvent prijíma argumenty pre kontext (argumenty poslané od klienta), ktoré môžu byť použité pre spracovanie udalostí. GetCallbackResult vracia reťazec, ktorý reprezentuje dáta, ktoré sa majú vrátiť ku klientovi. Dôvod, prečo je toto rozhranie rozdelené do dvoch metód, je aby bolo možné asynchronné procesovanie, napríklad vyvolanie dát z ovládacieho prvku data source. Ovládací prvok potom zaregistruje callback funkciu na strane klienta, ktorá dokáže vytvoriť argumenty pre odoslanie ku serverovým delegátom, a aby bola vyvolaná funkcia spracovania chýb, v prípade ak pri procesovaní callbacku nastane chyba. Nakoniec vydá ovládací prvok referencie událostí použitím Page.ClientScript.GetCallBackEventReference. Nasledujúci príklad ukazuje použitie klientských callback funkcií pre implementáciu scenáru kaskadujúceho ovládacieho prvku DropDownList. V tomto prípade samotná stránka za účelom demoštrácie implementuje rozhranie ICallbackEventHandler.

VB CallBack Event Handlers
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.