ASP.NET Page pro začátečníky

Poměrně často přicházím do kontaktu se začátečníky, kteří se chtějí naučit pracovat s technologií .net. Jejich volba pak většinou míří na web a tedy použítí a tvorbu asp.net stránek.

Před takovými začátečníky však stojí poměrně velký znalostní kopec, který musí překonat, než pochopí, jak takovou stránku správně ovládat. Jelikož má asp.net stránka - třída Page - poměrně bohatý událostní model, není vždy úplně jasné a na první pohled zřejmé, co v kterou chvíli dělat a kam vlastně soustředit veškeré své úsilí.

Přestože jsem byl v prvních rocích též nadšen, obdobně jako třeba Michal Valášek - vzpomínám ještě na jeho první prezentaci o asp.net - s příchodem asp.net 2.0 toto mé nadšení malinko opadlo a já se začal dívat i na jiné možnosti. (To, jakou možnost jsem nakonec zvolil, nechám ještě chvilku v utajení, abyste si mohli zasoutěžit.)

A třeba i tento týden, kdy jsem napsal článek o tom, kdy získat a navázat data na zobrazovací prvky, mě jen utvrdil v tom, že pro začátečníky by to chtělo něco trošku jednoduššího.

ASP.NET beginner page

A tak mě napadlo, jak by tak mohla vypadat, alespoň co se týká událostního modelu taková beginner page, stránka určená pro začátečníky, nebo i pro ty, kteří nepotřebují využít všech nabízených událostí - a že se to zas tak často děje.

Co by taková třída měla umožnit. Stále je založena na implementaci page controlleru, stejně jako současná Page, avšak má jen potřebné události, které je nutné obsloužit a zároveň je malinko, logičtěji, uspořádává. Tím by mělo být zároveň zajištěno, že by nepřipustila, aby docházelo k poměrně častým, školáckým, chybám.

Posloupnost obsluhovaných událostí

  • Init - v této události má vývojář možnost ovlivnit / zrekonstruovat objektový model stránky ještě před tím, než budou dotažena data ze zaslaného requestu. Toto obnovení by v případě úplných začátečníků mohlo být nahrazeno uložením objektového stromu do ViewState. Pro vyvolání událostí pak použít AutoEventWireup a začátečníka událostí nezatěžovat.
  • Change a Command - zpracování reakcí na klientovo chování - interakci s aplikací. Jak už jsem se zmínil v předchozím článku, Obsluhu události Load můžeme vynechat, neboť data můžeme získat i později a s menší pravděpodobností výskytu chyby.
  • DataRetrieve - po zpracování reakcí od klienta je možné na jejich základě získat data a navázat je na zobrazovací prvky

Pro začátečníka myslím plně dostačující událostní model. Samozřejmě stále by měl možnost reagovat na události zobrazovacích prvků jako třeba GridView a jeho RowDataBound, které nesouvisí s událostmi stránky.

Teorie krásná věc

To co jsem výše popsal je jen moje teorie, která vznikla jako reakce na události uplynulých dnů a z otázek asp.net začátečníků. Jak ji však přenést do praxe? Je mi celkem jasné, že asi nepůjde jenom podědit třídu Page a skrýt události, ale bude to chtít vytvořit vlastní implementaci asp.net Page controlleru a zároveň zachovat veškerou funkcionalitu, která je v současné chvíli.

Takto popsané to vypadá velice jednoduše, ale co na takový první pohled takto vypadá, většinou se změní ve složitý oříšek, a pokud by se našel dobrovolník, který by chtěl pomoci, určitě se nebudu zlobit, když se zapojí a bude alespoň konzultantem. Zatím mám v hlavě nápad a chuť jej realizovat, teď ještě najít dostatek času a pustit se do toho.

Myslíte, že to má vůbec význam, se do toho pouštět a nebo vidíte nějaký neřešitelný zádrhel?

4 Comments

  • rarouš said

    Před rokem bych možná mluvil jinak, ale dnes už vím jasně, že ASP.NET WebForms bych začátečníkovi rozmluvil a doporučil mu MonoRail. Ovšem problém je v tom, že neexistuje dostatečná literatura, šel by někdo spíš do toho? :) Já už mám něco rozepsaného...

  • Onecar said

    Jako začátek pro začátečníky hezký počin, ale asi bys měl dopsat, co mám stáhnout, abych mohl v ASP.NET psát. Nikdy jsem totiž o něm neslyšel, jediné s čím mám zkušenosti je PHP (a pochopitelně HTML, CSS, JavaScript, SQL).

Add a Comment