Upload
jan-hridel
View
138
Download
0
Embed Size (px)
Citation preview
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ů
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
ASP.NET MVC 5 - Jak začít?Výchozí “Hello World” aplikace je dobrý výchozím bodem pro ASP.NET MVC apliaci.
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/beveragesodpoví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
ASP.NET MVC 5 - routování - příklady
Definice routy Příklad odpovídající URL
{controller}/{action}/{id} /Products/show/beverages
{table}/Details.aspx /Products/Details.aspx
blog/{action}/{entry} /blog/show/123
{reporttype}/{year}/{month}/{day} /sales/2008/1/5
{locale}/{action} /US/show
{language}-{country}/{action} /en-US/show
ASP.NET MVC 5 - routování - typické URL vzory
Výchozí vzor adresy URL Příklady odpovídajících adres URL
{controller}/{action}/{id} http://server/application/Products/show/beverages
{resource}.axd/{*pathInfo} http://server/application/WebResource.axd?d=...
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
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
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"
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}
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
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
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"
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.
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>
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>
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