22
ASP.NET MVC Úvod do technologie

ASP.NET MVC

Embed Size (px)

Citation preview

ASP.NET MVC

Úvod do technologie

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?

ASP.NET MVC 5 - Jak začít?

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 - routování

Více viz dokumentace asp.net

ASP.NET MVC 5 - Razor templates

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