MVC Framework - mechanizm routingu
ASP.NET MVC Routing umożliwia korzystanie z adresów URL, które opisują działania użytkownika i są łatwiejsze do zrozumienia dla użytkowników. Jednocześnie routing może służyć do ukrywania danych, które nie mają być pokazywane użytkownikowi końcowemu.
Na przykład w aplikacji, która nie używa routingu, użytkownikowi zostanie wyświetlony adres URL jako http: //myapplication/Users.aspx? Id = 1, co odpowiadałoby plikowi Users.aspx w ścieżce mojej aplikacji i wysyłając identyfikator jako 1 , Generalnie nie chcielibyśmy pokazywać takich nazw plików naszemu użytkownikowi końcowemu.
Do obsługi adresów URL MVC platforma ASP.NET wykorzystuje system routingu, który umożliwia tworzenie dowolnych wzorców adresów URL i wyrażanie ich w jasny i zwięzły sposób. Każda trasa w MVC zawiera określony wzorzec adresu URL. Ten wzorzec adresu URL jest porównywany z adresem URL przychodzącego żądania i jeśli adres URL pasuje do tego wzorca, jest używany przez mechanizm routingu do dalszego przetwarzania żądania.
Format adresu URL routingu MVC
Aby zrozumieć routing MVC, rozważ następujący adres URL -
http://servername/Products/Phones
W powyższym adresie URL Produkty to pierwszy segment, a Telefon to drugi segment, który można wyrazić w następującym formacie -
{controller}/{action}
Struktura MVC automatycznie traktuje pierwszy segment jako nazwę kontrolera, a drugi segment jako jedną z akcji wewnątrz tego kontrolera.
Note- Jeśli nazwa Twojego kontrolera to ProductsController, w routingowym adresie URL wymieniasz tylko produkty. Struktura MVC automatycznie rozpoznaje sufiks kontrolera.
Utwórz prostą trasę
Trasy są zdefiniowane w pliku RouteConfig.cs, który znajduje się w folderze projektu App_Start.
W tym pliku zobaczysz następujący kod -
public class RouteConfig {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
}
}
Ta metoda RegisterRoutes jest wywoływana przez Global.ascx podczas uruchamiania aplikacji. Metoda Application_Start w Global.ascx wywołuje tę funkcję MapRoute, która ustawia domyślny kontroler i jego akcję (metodę wewnątrz klasy Controller).
Aby zmodyfikować powyższe domyślne mapowanie zgodnie z naszym przykładem, zmień następujący wiersz kodu -
defaults: new { controller = "Products", action = "Phones", id = UrlParameter.Optional }
To ustawienie wybierze ProductsController i wywoła w nim metodę Phone. Podobnie, jeśli masz inną metodę, taką jak Electronics wewnątrz ProductsController, jej adres URL będzie wyglądał tak:
http://servername/Products/Electronics