Sdílet prostřednictvím


Vytváření vlastních tras (C#)

od Microsoftu

Zjistěte, jak přidat vlastní trasy do aplikace ASP.NET MVC. V tomto kurzu se dozvíte, jak upravit výchozí směrovací tabulku v souboru Global.asax.

V tomto kurzu se naučíte přidat vlastní trasu do aplikace ASP.NET MVC. Dozvíte se, jak upravit výchozí směrovací tabulku v souboru Global.asax pomocí vlastní trasy.

U mnoha jednoduchých aplikací ASP.NET MVC bude výchozí směrovací tabulka fungovat správně. Můžete ale zjistit, že máte specializované potřeby směrování. V takovém případě můžete vytvořit vlastní trasu.

Představte si například, že vytváříte aplikaci blogu. Možná budete chtít zpracovat příchozí požadavky, které vypadají takto:

/Archiv/12-25-2009

Když uživatel zadá tento požadavek, chcete vrátit položku blogu, která odpovídá datu 25. 12. 2009. Pokud chcete tento typ požadavku zpracovat, musíte vytvořit vlastní trasu.

Soubor Global.asax ve výpisu 1 obsahuje novou vlastní trasu s názvem Blog, která zpracovává požadavky, které vypadají jako /Archive/entry date.

Výpis 1 – Global.asax (s vlastní trasou)

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);
        }
    }
}

Pořadí tras, které přidáte do směrovací tabulky, je důležité. Naše nová vlastní trasa blogu se přidá před existující výchozí trasu. Pokud jste pořadí obrátili, bude se místo vlastní trasy vždy volat výchozí trasa.

Vlastní trasa blogu odpovídá jakémukoli požadavku, který začíná na /Archive/. Takže odpovídá všem následujícím adresám URL:

  • /Archiv/12-25-2009

  • /Archiv/10-6-2004

  • /Archiv/apple

Vlastní trasa mapuje příchozí požadavek na kontroler s názvem Archiv a vyvolá akci Entry(). Při zavolání metody Entry() se datum zadání předá jako parametr s názvem entryDate.

Vlastní trasu blogu můžete použít s kontrolerem v seznamu 2.

Výpis 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();
        }
    }
}

Všimněte si, že metoda Entry() ve výpisu 2 přijímá parametr typu DateTime. Architektura MVC je dostatečně inteligentní, aby automaticky převela datum zadání z adresy URL na hodnotu DateTime. Pokud parametr vstupního data z adresy URL nelze převést na DateTime, dojde k chybě (viz obrázek 1).

Obrázek 1 – Chyba při převodu parametru

Dialogové okno New Project (Nový projekt)

Obrázek 01: Chyba při převodu parametru (kliknutím zobrazíte obrázek v plné velikosti)

Souhrn

Cílem tohoto kurzu bylo ukázat, jak můžete vytvořit vlastní trasu. Dozvěděli jste se, jak přidat vlastní trasu do směrovací tabulky v souboru Global.asax, která představuje položky blogu. Probrali jsme, jak mapovat žádosti o položky blogu na kontroler s názvem ArchiveController a akci kontroleru s názvem Entry().