ASP.NET MVC – přehled směrování (VB)
V tomto kurzu Stephen Walther ukazuje, jak rozhraní ASP.NET MVC mapuje požadavky prohlížeče na akce kontroleru.
V tomto kurzu se seznámíte s důležitou funkcí každé aplikace ASP.NET MVC s názvem ASP.NET Routing. Modul ASP.NET Routing zodpovídá za mapování příchozích požadavků prohlížeče na konkrétní akce kontroleru MVC. Na konci tohoto kurzu pochopíte, jak standardní směrovací tabulka mapuje požadavky na akce kontroleru.
Použití výchozí směrovací tabulky
Když vytvoříte novou aplikaci ASP.NET MVC, aplikace je již nakonfigurovaná tak, aby používala směrování ASP.NET. ASP.NET Směrování je nastavené na dvou místech.
Nejprve ASP.NET Směrování je povolené v konfiguračním souboru webu vaší aplikace (Web.config souboru). V konfiguračním souboru jsou čtyři oddíly, které jsou relevantní pro směrování: oddíl system.web.httpModules, oddíl system.web.httpHandlers, oddíl system.webserver.modules a oddíl system.webserver.handlers. Dávejte pozor, abyste tyto oddíly neodstranily, protože bez těchto oddílů už směrování nebude fungovat.
Za druhé, a co je důležitější, v souboru Global.asax aplikace se vytvoří směrovací tabulka. Soubor Global.asax je speciální soubor, který obsahuje obslužné rutiny událostí pro ASP.NET události životního cyklu aplikace. Směrovací tabulka se vytvoří během události Spuštění aplikace.
Soubor ve výpisu 1 obsahuje výchozí soubor Global.asax pro aplikaci ASP.NET MVC.
Výpis 1 – Global.asax.vb
' Note: For instructions on enabling IIS6 or IIS7 classic mode,
' visit https://go.microsoft.com/?LinkId=9394802
Public Class MvcApplication
Inherits System.Web.HttpApplication
Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
' MapRoute takes the following parameters, in order:
' (1) Route name
' (2) URL with parameters
' (3) Parameter defaults
routes.MapRoute( _
"Default", _
"{controller}/{action}/{id}", _
New With {.controller = "Home", .action = "Index", .id = ""} _
)
End Sub
Sub Application_Start()
RegisterRoutes(RouteTable.Routes)
End Sub
End Class
Při prvním spuštění aplikace MVC se volá metoda Application_Start(). Tato metoda zase volá metodu RegisterRoutes(). Metoda RegisterRoutes() vytvoří směrovací tabulku.
Výchozí směrovací tabulka obsahuje jednu trasu (s názvem Výchozí). Výchozí trasa mapuje první segment adresy URL na název kontroleru, druhý segment adresy URL na akci kontroleru a třetí segment na parametr s názvem ID.
Představte si, že do adresního řádku webového prohlížeče zadáte následující adresu URL:
/Home/Index/3
Výchozí trasa mapuje tuto adresu URL na následující parametry:
controller = Home
action = Index
id = 3
Když požádáte o adresu URL /Home/Index/3, spustí se následující kód:
HomeController.Index(3)
Výchozí trasa obsahuje výchozí hodnoty pro všechny tři parametry. Pokud nezadáte kontroler, nastaví se výchozí hodnota parametru kontroleru na hodnotu Home. Pokud akci nezadáte, parametr akce se ve výchozím nastavení nastaví na hodnotu Index. Pokud nezadáte ID, parametr id se ve výchozím nastavení nastaví na prázdný řetězec.
Podívejme se na několik příkladů, jak výchozí trasa mapuje adresy URL na akce kontroleru. Představte si, že do adresního řádku prohlížeče zadáte následující adresu URL:
/Domů
Vzhledem k výchozí výchozí parametr trasy, zadání této adresy URL způsobí index() metodu HomeController třídy v výpisu 2 bude volána.
Výpis 2 – HomeController.vb
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index(ByVal id As String)
Return View()
End Function
End Class
Ve výpisu 2 obsahuje třída HomeController metodu s názvem Index(), která přijímá jeden parametr s názvem Id. Adresa URL /Home způsobí volání metody Index() s hodnotou Nothing jako hodnotou parametru Id.
Vzhledem k tomu, že rozhraní MVC vyvolá akce kontroleru, adresa URL /Home také odpovídá index() metody HomeController třídy v výpisu 3.
Výpis 3 – HomeController.vb (akce indexu bez parametru)
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index()
Return View()
End Function
End Class
Metoda Index() ve výpisu 3 nepřijímá žádné parametry. Adresa URL /Home způsobí volání této metody Index(). Tuto metodu vyvolá také adresa URL /Home/Index/3 (ID se ignoruje).
Adresa URL /Home také odpovídá metodě Index() třídy HomeController ve výpisu 4.
Výpis 4 – HomeController.vb (akce indexu s parametrem s možnou hodnotou null)
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index(ByVal id? As Integer)
Return View()
End Function
End Class
Ve výpisu 4 má metoda Index() jeden celočíselný parametr. Vzhledem k tomu, že parametr je parametr s možnou hodnotou null (může mít hodnotu Nothing), lze index() volat bez vyvolání chyby.
Nakonec vyvolání metody Index() ve výpisu 5 s adresou URL /Home způsobí výjimku, protože parametr ID není parametrem s možnou hodnotou null. Pokud se pokusíte vyvolat metodu Index(), zobrazí se chyba na obrázku 1.
Výpis 5 – HomeController.vb (akce indexu s parametrem ID)
<HandleError()> _
Public Class HomeController
Inherits System.Web.Mvc.Controller
Function Index(ByVal id As Integer)
Return View()
End Function
End Class
Obrázek 01: Vyvolání akce kontroleru, která očekává hodnotu parametru (kliknutím zobrazíte obrázek v plné velikosti)
Adresa URL /Home/Index/3 na druhé straně funguje v pořádku s akcí kontroleru indexu ve výpisu 5. Požadavek /Home/Index/3 způsobí, že metoda Index() bude volána s parametrem ID, který má hodnotu 3.
Souhrn
Cílem tohoto kurzu bylo poskytnout stručný úvod ke směrování ASP.NET. Prozkoumali jsme výchozí směrovací tabulku, kterou získáte s novou aplikací ASP.NET MVC. Dozvěděli jste se, jak výchozí trasa mapuje adresy URL na akce kontroleru.