Počítadlo přístupů v ASP.NET
Části či bloky stránek se velmi často opakují. Proč je tedy neustále dokola opisovat, nebo si dopomáhat různými těžkopádnými způsoby (#include), když .NET framework nabízí jednoduchou znovupoužitelnost často používaného kódu, a to s pomocí uživatelských ovládacích prvků (User Controls). Jejich použití vám ukáži na příkladě počítadla přístupů.
Uživatelské ovládací prvky jsou vlastně samostatnými kusy stránek, které lze do jiných stránek jednoduše vkládat a řešit tím výše popsaný problém. Prvky se nacházejí ve zvláštních souborech s příponou .ascx a od normálních stránek se liší pouze tím, že neobsahují tagy <html>
, <body>
a <form>
.
Připravil jsem jednoduchý příklad uživatelského prvku, který uvidíte na většině webů. Je to počítadlo přístupů, anglicky counter. Pro vylepšení jsem se rozhodl toto počítadlo udělat grafické a automaticky generované, takže již budu využívat zdokonalené funkce systému GDI+, pro kreslení a ukládání obrázku.
Postup bude stejný jako u vytváření klasického webového formuláře, jenom přípona souboru bude jiná. Vytvoříme si tedy soubor jménem HitCounter.ascx. Jeho obsahem bude následující kód:
|
Z tohoto kódu lze vyčíst, že se jedná o uživatelský prvek v jazyce C# s vloženým jedním ovládádacím prvkem – Image. Tento prvek se posílá uživateli jako tag <img…
Nyní vytvoříme soubor, který bude obsahovat vlastní logiku tohoto počítadla. Je to soubor HitCounter.ascx.cs s tímto obsahem, který po částech proberu.
|
Nadeklaroval jsem si jmenný prostor (namespace) jménem MyControls a do něj jsem vložil všechny potřebné odkazy na jmenné prostory, které bude počítadlo využívat. Jsou zde jak jmenné prostory pro přístup k disku a souborům (IO), tak pro kreslení 2D grafiky (Drawing2D) a používání grafických formátů (Imaging).
|
Vytvořil jsem třídu HitCounter odvozenou od třídy UserControl a nadeklaroval jsem soukroumé proměnné určující vzhled počítadla. Soukromé jsou proto, protože přístup k nim je uskutečněn pomocí vlastností a tím je dodržena jedna ze zásad objektově orientovaného programování – zapouzdřenost.
Ještě je tu jedna proměnná s názvem Counter, která je odvozena od třídy Image a poskytuje přístup do ovládacího prvku Image, nadeklarovaného v souboru HitCounter.ascx. Funkce OnInit
nastavuje, že funkce Page_Load
je událostí na událost Load. Následuje volání funkce OnInit
základní třídy (UserControl). Hlavní logika je umístěna ve funkci Page_Load
. Funkce si otevře proud dat na čtení ze souboru counter.txt, z toho přečte řetězec a převede ho do číselného formátu. Pak tento proud zavře. Následuje zvetšení počtu přístupů o jedna a jeho zapsání podobným způsobem zpět do souboru.
|
Tato část kódu zajišťuje právě ono vykreslování počítadla. Vytvoří se nová bitmapa a z ní se vezme třída Graphics, pomocí které se kreslení provádí. Následuje nastavení vyhlazovacího módu a vyplnění pozadí barvou. Dále se vykreslí obdélníky, které dělají rám počítadla. S pomocí třídy StringFormat se nastaví zarovnání textu na střed. Funkce DrawString nakreslí doprostřed číslo získané ze souboru. Celý tento obrázek se uloží funkcí Save do souboru counter.jpg. Uvolní se zdroje používané třídou Graphics a Bitmap. Ovládacímu prvku Counter(Image) se nastaví cesta na obrázek counter.jpg a AlternateText pro případ nezobrazení počítadla.
|
Toto jsou již zmiňované vlastnosti tohoto počítadla. Jejich změna z venku je promítnuta do chování, či vzhledu počítadla.
Počítadlo je nyní hotové. Je však nutné si k němu dodělat ještě testovací stránku. Ta se bude jmenovat Test.aspx a bude obsahovat tento kód:
|
Zde bylo nutné přidat direktivu <%@ Register, kterou jsme dali frameworku najevo, že používáme uživatelský ovládací prvek a odkud ho používáme. Pomocí programového kódu této stránky by bylo možné měnit vlastnosti počítadla, ale pro demonstraci tento příklad postačuje.
Ještě je nutné do adresáře, kde celý tento projekt je, tedy wwwroot\… vytvořit soubor counter.txt a zadat do něho počáteční hodnotu (obvykle to bývá nula).
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Globální výpadek IT systémů: Může za to jediná aktualizace
19. července 2024 -
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024 -
Vstupte do éry umělé inteligence: ASOME Max Studio s AMD Ryzen™ 9 7940HS
14. listopadu 2023 -
Aukce CZ domén: Jak vydražit expirovanou CZ doménu?
12. června 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
Jakub
Úno 12, 2011 v 23:08Dobrý den,
mám malinký problém a to v souboru HitCounter.ascx a píše mi to chybu
Could not load type ‚HitCounter‘.
prosím poradte mi v čem by mohla být chyba děkuji Chudik