Url yönetimini Controller'lar içindeki Action'lar üzerinden yapma imkanımız var mıdır?
Yayınlanma Tarihi : 27 Temmuz 2020Son Güncelleme : 27 Temmuz 2020
Evet mümkündür. Önce RouteConfig.cs dosyamız içindeki RegisterRoutes adındaki varsayılan fonksiyonumuz içinde RouteCollection tipli "routes" değişkeninin MapMvcAttributeRoutes fonksiyonunu çağırıp ardından Controller'lardaki Action'larımız üzerinde özel url tanımlamalarını gerçekleştirebiliriz.
Örnek RouteConfig.cs dosyası;
using System.Web.Mvc; using System.Web.Routing; namespace KaanCamur { public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // Sadece RouteCollection sınıfından türetilmiş routes değişkeninin parametresiz MapMvcAttributeRoutes() fonksiyonunu çağırıyoruz hepsi bu kadar. Burada gördüğünüz diğer kodlar sistem tarafından varsayılan olarak otomatik oluşturulmuştur. routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Tr", action = "Index", id = UrlParameter.Optional } ); } } }
Örnek Controller.cs dosyası;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Security;
namespace KaanCamur.Controllers
{
public class TrController : Controller
{
// Adres çubuğunda "Tr/AnaSayfa" adresi (url'i) çağırıldığında çalışacak Index Action'ı.
[Route("Tr/AnaSayfa")]
public ActionResult Index()
{
return View()
}
// Adres çubuğunda "Tr/İletişim" adresi (url'i) çağırıldığında çalışacak Iletisim Action'ı.
[Route("Tr/İletişim")]
public ActionResult Iletisim()
{
return View()
}
// Adres çubuğunda "Tr/Ürünler" adresi (url'i) çağırıldığında çalışacak Urunler Action'ı.
[Route("Tr/Ürünler")]
public ActionResult Urunler()
{
return View()
}
// Adres çubuğunda "Tr/Günlük" adresi (url'i) çağırıldığında çalışacak Blog Action'ı.
[Route("Tr/Günlük")]
public ActionResult Blog()
{
return View()
}
}
}