Tworzenie tras niestandardowych (C#)

autor: Microsoft

Dowiedz się, jak dodać trasy niestandardowe do aplikacji ASP.NET MVC. Z tego samouczka dowiesz się, jak zmodyfikować domyślną tabelę tras w pliku Global.asax.

Z tego samouczka dowiesz się, jak dodać trasę niestandardową do aplikacji MVC ASP.NET. Dowiesz się, jak zmodyfikować domyślną tabelę tras w pliku Global.asax przy użyciu trasy niestandardowej.

W przypadku wielu prostych ASP.NET aplikacji MVC domyślna tabela tras będzie działać dobrze. Jednak możesz odkryć, że masz wyspecjalizowane potrzeby routingu. W takim przypadku możesz utworzyć trasę niestandardową.

Załóżmy na przykład, że tworzysz aplikację w blogu. Może być konieczne obsłużenie żądań przychodzących, które wyglądają następująco:

/Archive/12-25-2009

Gdy użytkownik wprowadzi to żądanie, chcesz zwrócić wpis w blogu odpowiadający dacie 12.25.2009. Aby obsłużyć ten typ żądania, należy utworzyć trasę niestandardową.

Plik Global.asax na liście 1 zawiera nową trasę niestandardową o nazwie Blog, która obsługuje żądania, które wyglądają jak /Archive/entry date.

Lista 1 — Global.asax (z trasą niestandardową)

using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Blog",                                           // Route name
                "Archive/{entryDate}",                            // URL with parameters
                new { controller = "Archive", action = "Entry" }  // Parameter defaults
            );
            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );
        }
        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
}

Kolejność tras dodanych do tabeli tras jest ważna. Nasza nowa niestandardowa trasa bloga jest dodawana przed istniejącą trasą domyślną. W przypadku odwrócenia kolejności trasa domyślna zawsze będzie wywoływana zamiast trasy niestandardowej.

Niestandardowa trasa bloga jest zgodna z dowolnym żądaniem rozpoczynającym się od /Archive/. W związku z tym jest on zgodny ze wszystkimi następującymi adresami URL:

  • /Archive/12-25-2009

  • /Archive/10-6-2004

  • /Archive/apple

Trasa niestandardowa mapuje żądanie przychodzące na kontroler o nazwie Archiwum i wywołuje akcję Entry(). Po wywołaniu metody Entry() data wejścia jest przekazywana jako parametr o nazwie entryDate.

Możesz użyć trasy niestandardowej bloga z kontrolerem w liście 2.

Lista 2 — ArchiveController.cs

using System;
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
    public class ArchiveController : Controller
    {
        public string Entry(DateTime entryDate)
        {
            return "You requested the entry from " + entryDate.ToString();
        }
    }
}

Zwróć uwagę, że metoda Entry() w pozycji Listing 2 akceptuje parametr typu DateTime. Struktura MVC jest wystarczająco inteligentna, aby automatycznie przekonwertować datę wejścia z adresu URL na wartość DateTime. Jeśli nie można przekonwertować parametru daty wejścia z adresu URL na wartość DateTime, zostanie zgłoszony błąd (zobacz Rysunek 1).

Rysunek 1. Błąd podczas konwertowania parametru

Okno dialogowe Nowy projekt

Rysunek 01. Błąd podczas konwertowania parametru (kliknij, aby wyświetlić obraz pełnowymiarowy)

Podsumowanie

Celem tego samouczka było pokazanie, jak można utworzyć trasę niestandardową. Przedstawiono sposób dodawania trasy niestandardowej do tabeli tras w pliku Global.asax reprezentującym wpisy w blogu. Omówiliśmy sposób mapowania żądań wpisów w blogu na kontroler o nazwie ArchiveController i akcji kontrolera o nazwie Entry().