Aracılığıyla paylaş


Özel Rotalar Oluşturma (C#)

Microsoft tarafından

ASP.NET MVC uygulamasına özel yollar eklemeyi öğrenin. Bu öğreticide, Global.asax dosyasındaki varsayılan yol tablosunu değiştirmeyi öğreneceksiniz.

Bu öğreticide, bir ASP.NET MVC uygulamasına özel yol eklemeyi öğreneceksiniz. Global.asax dosyasındaki varsayılan yol tablosunu özel bir yol ile değiştirmeyi öğreneceksiniz.

Birçok basit ASP.NET MVC uygulaması için varsayılan yönlendirme tablosu düzgün çalışır. Ancak, özelleştirilmiş yönlendirme gereksinimleriniz olduğunu fark edebilirsiniz. Bu durumda, özel bir yol oluşturabilirsiniz.

Örneğin, bir blog uygulaması oluşturduğunuzu düşünün. Aşağıdakine benzer gelen istekleri işlemek isteyebilirsiniz:

/Arşiv/12-25-2009

Kullanıcı bu isteği girdiğinde, 25.12.2009 tarihine karşılık gelen blog girdisini döndürmek istersiniz. Bu tür bir isteği işlemek için özel bir yol oluşturmanız gerekir.

Liste 1'deki Global.asax dosyası, /Archive/entry date gibi görünen istekleri işleyen Blog adlı yeni bir özel yol içerir.

Listeleme 1 - Global.asax (özel rota ile)

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

Yol tablosuna eklediğiniz yolların sırası önemlidir. Yeni özel Blog rotamız mevcut Varsayılan rotadan önce eklenir. Sırayı tersine çevirdiyseniz, varsayılan yol her zaman özel yol yerine çağrılır.

Özel Blog yolu /Archive/ ile başlayan tüm isteklerle eşleşir. Bu nedenle, aşağıdaki URL'lerin tümüyle eşleşir:

  • /Arşiv/12-25-2009

  • /Archive/10-6-2004

  • /Archive/apple

Özel yol, gelen isteği Arşiv adlı bir denetleyiciye eşler ve Entry() eylemini çağırır. Entry() yöntemi çağrıldığında, giriş tarihi entryDate adlı bir parametre olarak geçirilir.

Liste 2'deki denetleyiciyle Blog özel yolunu kullanabilirsiniz.

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

Listeleme 2'deki Entry() yönteminin DateTime türünde bir parametre kabul ettiğini unutmayın. MVC çerçevesi, URL'den giriş tarihini otomatik olarak bir DateTime değerine dönüştürecek kadar akıllıdır. URL'den giriş tarihi parametresi DateTime'a dönüştürülemiyorsa bir hata oluşur (bkz. Şekil 1).

Şekil 1 - Parametre dönüştürme hatası

Yeni Proje iletişim kutusu

Şekil 01: Parametre dönüştürme hatası (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Özet

Bu öğreticinin amacı, nasıl özel yol oluşturabileceğinizi göstermekti. Global.asax dosyasındaki yönlendirme tablosuna blog girdilerini temsil eden özel bir yol eklemeyi öğrendinsiniz. Blog girdileri için istekleri ArchiveController adlı bir denetleyiciye ve Entry() adlı bir denetleyici eylemine eşlemeyi ele aldık.