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