2. Co to je ASP.NET MVC?
Technologie pro tvorbu sofistikovaných webových aplikací.
● Založeno na návrhovém vzoru Model-View-Controller
● Umožňuje rychlý agilní vývoj
● Využití nejnovějších webových standardů
3. ASP.NET MVC 5 vs. ASP.NET Core MVC 6
ASP.NET MVC 5
● Podporováno ve Visual Studio 2013
ASP.NET Core (MVC 6)
● Vyžaduje Visual Studio 2015
6. ASP.NET MVC 5 - Jak začít?
Výchozí “Hello World” aplikace je dobrý výchozím
bodem pro ASP.NET MVC apliaci.
7. ASP.NET MVC 5 - routování
Url adresy neobsahují adresu fyzického souboru, jako např.:
http://server/application/Products.aspx?id=4
Ale požívají “url patterns”:
Adresa: http://server/application/Products/show/beverages
odpovídá vzoru: server/application/{area}/{action}/{category}
>> čitelnější i pro lidi
>> router se pak stará o správný překlad url (podle šablony) na fyzický soubor
(controller) a příslušnou metodu a s příslušnými parametry
10. ASP.NET MVC 5 - routování - přidání nových cest
Pokud přijmete konvenci MVC pro implementaci popisovačů vytvořením tříd
dědících ze třídy ControllerBase a budete jim dávat názvy končící "Controller",
nemusíte pro aplikaci MVC přidávat žádné cesty ručně. Předem nastavené cesty
budou volat metody akcí, které implementujete ve třídách popisovače.
Pokud chcete přidat vlastní cesty do aplikace MVC, použijte metodu
MapRoute(RouteCollection, String, String) namísto metody
MapPageRoute(String, String, String).
Viz: https://goo.gl/kcWnwu
11. ASP.NET MVC 5 - routování
Nastavení výchozích hodnot parametrů adresy URL
Když definujete cestu, můžete parametru přiřadit výchozí hodnotu. Výchozí
hodnota je použita, pokud v adrese URL není hodnota daného parametru
specifikována. Výchozí hodnoty cesty nastavíte přiřazením objektu slovníku
vlastnosti Defaults třídy Route. Následující příklad ukazuje, jak přidat cestu, která
má výchozí hodnoty, pomocí metody MapPageRoute(String, String, String,
Boolean, RouteValueDictionary).
Viz: https://goo.gl/eEjs2K
12. ASP.NET MVC 5 - routování
Nastavení výchozích hodnot parametrů adresy URL
Když směrování technologie ASP.NET obslouží požadavek adresy URL, definice cesty ukázaná v příkladu (s
výchozími hodnotami food pro categoryName a show pro action) poskytne výsledky, které jsou uvedeny v
následující tabulce.
adresa URL Hodnoty parametru
/Category action = "show" (výchozí hodnota)
categoryName = "food" (výchozí hodnota)
/Category/add action = "add"
categoryName = "food" (výchozí hodnota)
/Category/add/beverages action = "add"
categoryName= "beverages"
13. ASP.NET MVC 5 - routování
Obsluha proměnného počtu segmentů ve vzoru adresy URL
Někdy musíte obsluhovat žádosti adresy URL, které obsahují proměnný počet segmentů adresy URL. Při
definici cesty specifikujete, že pokud má adresa URL více segmentů, než je uvedeno ve vzoru, mají se
segmenty navíc považovat za součást posledního segmentu. K obsluze dalších segmentů tímto způsobem
označte poslední parametr hvězdičkou (*). Jedná se o takzvaný parametr catch-all. Cesta, která obsahuje
parametr catch-all, bude souhlasit i s adresami URL, které pro poslední parametr neobsahují žádné
hodnoty. Následující příklad ukazuje vzor cesty, který odpovídá neznámému počtu segmentů.
query/{queryname}/{*queryvalues}
14. ASP.NET MVC 5 - routování
Obsluha proměnného počtu segmentů ve vzoru adresy URL
adresa URL Hodnoty parametru
/query/select/bikes/onsale queryname = "select"
queryvalues = "bikes/onsale"
/query/select/bikes queryname = "select"
queryvalues = "bikes"
/query/select queryname = "select"
queryvalues = prázdný řetězec
15. ASP.NET MVC 5 - routování
Přidání omezení směrování
Kromě porovnání žádosti adresy URL s definicí cesty podle počtu parametrů v adrese URL můžete
specifikovat, že hodnoty v parametrech mají splňovat určitá omezení.
Pokud adresa URL obsahuje hodnoty, které jsou mimo omezení pro cestu, pak není tato cesty použita k
obsluze požadavku.
Omezení slouží k zajištění, že parametry adresy URL budou obsahovat hodnoty, které budou ve vaší
aplikaci fungovat.
https://goo.gl/JAgFKZ
16. ASP.NET MVC 5 - routování
Přidání omezení směrování
Když směrování zpracuje žádost adresy URL, definice cesty z předchozího příkladu (https://goo.gl/JAgFKZ)
poskytne výsledky, které jsou uvedeny v následující tabulce.
adresa URL Výsledek
/US Žádná shoda. Parametry locale a year jsou povinné.
/US/08 Žádná shoda. Omezení na parametru year vyžaduje 4 číslice.
/US/2008 locale = "US"
year = "2008"
17. ASP.NET MVC 5 - routování
Scénáře, kdy se směrování nepoužívá
Je nalezen fyzický soubor, který se shoduje se vzorem adresy URL
Například žádost http://server/application/Products/Beverages/Coffee.aspx není směrováním
obsloužena, pokud v cestě Products/Beverages/Coffee.aspx existuje fyzický soubor. Směrování
nezpracuje požadavek, i když odpovídá definovanému vzoru, jako je například {controller}/{action}/{id}.
Směrování je pro vzor adresy URL explicitně vypnuto
Rovněž můžete nastavit, aby směrování neobsluhovalo určité žádosti adres URL. Směrování zabráníte ve
vyřízení určitých požadavků definováním cesty a určením, že k jejich vyřízení má být použita třída
StopRoutingHandler. Pokud je požadavek obsloužen objektem StopRoutingHandler, objekt
StopRoutingHandler zablokuje jakékoli další zpracování žádosti směrováním. Namísto toho je požadavek
zpracován jako stránka ASP.NET, webová služba nebo jiný koncový bod technologie ASP.NET.
18. ASP.NET MVC 5 - routování
Více viz dokumentace asp.net
20. ASP.NET MVC 5 - Razor templates
Znak @
Začínají jím bloky kódu
<!-- Single statement blocks -->
@{ var total = 7; }
@{ var myMessage = "Hello World"; }
<!-- Inline expressions -->
<p>The value of your account is: @total </p>
<p>The value of myMessage is: @myMessage</p>
<!-- Multi-statement block -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Today is: " +
weekDay;
}
<p>The greeting is: @greetingMessage</p>
21. ASP.NET MVC 5 - Razor templates
Rozhodování
@{
var result = "";
if(IsPost)
{
result = "This page was posted using the Submit
button.";
}
else
{
result = "This was the first request for this
page.";
}
}
<form method="POST" action="" >
<input type="Submit" name="Submit" value="Submit"/>
<p>@result</p>
</form>
22. ASP.NET MVC 5 - další kapitoly
JavaScript and Client Frameworks
Mobile
Working with Data - Entity Framework PDF (Code First přístup vs. Model First přístup: https://goo.gl/Tr0uJw)
Testing and Debugging
Security, Authentication, and Authorization
Viz https://www.asp.net/mvc/overview/getting-started