Jednou z hlavních výhod, o kterých se mluví v souvislosti s MVC webovými frameworky, je to, že svým designem vedou vývojáře ke správnému rozvrstvení aplikace. Nejen začínající vývojáři ale občas umisťují něco tam, kam to nepatří, např. dávají moc logiky do views nebo (a to je asi nejtypičtější chyba) dávají aplikační logiku do controllerů. Podívejme se na to, jak je možné dále vést vývojáře ke správnému designu aplikace v rámci MVC frameworku, konkrétně ASP.NET MVC.
ASP.NET MVC – PRG
V tomto článku bych se rád podíval na to, jak je možné v ASP.NET MVC implementovat vzor Post-Redirect-Get. Ale proč se vůbec snažit o implementaci tohoto vzoru? Akademická odpověď by byla, že POST (stejně jako PUT a DELETE) HTTP metody jsou určeny pouze pro práci nad daty, nikoliv na prezentaci těchto dat, takže bychom měli vždy po POST, PUT a DELETE redirectovat na stránku, která prezentuje relevantní data. Praktické důvody, proč se následování tohoto vzoru v praxi vyplatí, jsou minimálně dva. Prvním je to, že uživatel v ideálním případě nikdy v adresním řádku prohlížeče neuvidí adresu, jejíž requestování by způsobilo operaci s daty. A protože ji neuvidí, nemůže si ji uložit do bookmarků ani poslat kamarádovi. Druhou výhodou tohoto nezobrazení adresy je zabránění vícenásobnému odeslání dat. Znáte to, stránka se načítá nějak pomalu, tak dáte F5, prohlížeč se zeptá, jestli odeslat data znovu, OK, a najednou jsem odeslal dva stejné posty do fóra, zaplatil dvakrát účet za telefon nebo koupil dvě auta 😉 Tak přesně tohle se nemůže nikdy stát, když budete ctít vzor PRG.
MVC v ASP.NET MVC
Jak je každému jasné, tak ASP.NET MVC je založeno na návrhovém vzoru Model-View-Controller. Rozebírat tady přímo tento vzor by bylo trošku kontraproduktivní, protože o něm již bylo napsáno mnoho. Zejména bych vypíchl výborné povídání o MVC na Zdrojáku. Zde bych se rád podíval na to, jak konkrétně je tento vzor implementován v ASP.NET MVC.
ASP.NET MVC – validace
V tomto článku bych rád navázal na úvodní článek o validacích. Nejprve se podíváme na to, jakým způsobem vlastně vstupují data od uživatele do naší ASP.NET MVC aplikace, jak tato data validovat a nakonec to završíme tím, že si povíme o tom, jak o validačních chybách informovat uživatele.
Celý příspěvek
ASP.NET MVC – úvod do validací
Všude tam, kde uživatel zadává nějaké údaje do aplikace, je potřeba tyto údaje před dalším zpracováním řádně zvalidovat, tedy ověřit jejich platnost (validitu). Je třeba si uvědomit, že validace existuje na různých úrovních. Pro účely tohoto článku nám bude stačit, když budeme rozlišovat mezi vstupní validací a business validací (více o validacích).
Celý příspěvek
Vnořené funkce v C#
Když jsem přecházel před lety z Delphi na C#, trošku mi chyběla možnost mít v metodě vnořenou funkci. Jasně, vždycky se to dá vyřešit tím, že se udělá další metoda, ale to už je další zbytečný kód navíc. Nejen, že si tím člověk zaplevelí třídu privátními metodami, které jsou velmi specifické a volají se jen z jedné metody, ale navíc musí do pomocné metody reprezentující vnořenou funkci předat kontext rodičovské metody, např. nějaké lokální proměnné nebo parametry.
Celý příspěvek
Variable scope v lambda expressions v C# 3.0
V C# 2.0 byly zavedeny anonymní metody, což ušetřilo hromadu psaní – když chtěl člověk předat nějakého delegáta, tak nemusel vytvářet metodu, ale mohl přiřadit přímo kus kódu a kompilátor se už sám postaral o to, že vytvořil metodu, do které fláknul ten kus kódu. Se C# 3.0 pak přišly tzv. lambda expressions, což je technicky to samé, jen je syntaxe méně košatá.
Celý příspěvek
Extension methods in C# 3.0 – null „dereferencing“
When you start with C# studying then one of first thesis is that you always should be sure if reference type is not null because if we will work with null then we can get NullReferenceException. What do you think about following C# 3.0 code?
List<string> list = null;
list.ToMyString();
Extension metody v C# 3.0 – „dereference“ nullu
Při studiu programování v C# je jedná z prvních pouček, se kterou se člověk setká, ta, která říká, že když chceme pracovat s referenčním typem, měli bychom si být jisti, že jeho hodnota není null, protože jinak bychom se mohli dočkat nepěkné NullReferenceException. Co byste řekli, že udělá následující kód v C# 3.0?
List<string> list = null;
list.ToMyString();
Iné Kafe – rozlučkový koncert
Není to tak dlouho, co jsem kamarádovi Mišákovi říkal, že teď už jen vidět naživo Iné Kafe a Ska-P a můžu umřít. V té době byly obě kapely rozpadlé, takže takové plácnutí do větru nebo povzdech. Ale co se nestalo – Ska-P se dali znovu dohromady, natočili nové album a 10. února mají koncert v Praze. Jaké pak bylo mé překvapení, když jsem při silvestrovském brouzdání zjistil, že poslední lednový den odehrajou Iné Kafe druhý rozlučkový koncert v Praze – původní rozlučkový koncert byl totiž v Bratislavě a byl oznámen asi dva týdny předem, takže se tam z Česka moc lidí nedostalo. No vůbec jsem neváhal a hned jsem vyrazil koupit lístky.
Celý příspěvek