DEV Community

MustafaSamedYeyin
MustafaSamedYeyin

Posted on

Asp.net core Routing Attribute Routing Giriş.

Routing artık ne olduğunu biliyoruz.

Attribute nedir ki routing'i ne ola ?

Tanımı ve tanımını aldığım linki aşağıya koyuyorum.

Herşeyden önce, niteliği (Attribute) tanımlamakta fayda vardır. Nitelikler, uygulandıkları tiplerin (types) yada üyelerin (members) çalışma zamanındaki davranışlarının değiştirilmesine olanak sağlayan sınıflardır.

https://www.buraksenyurt.com/post/C-Temelleri-Nitelikleri(Attributes)-Kavramak-bsenyurt-com-dan

Yukarıdaki linkteki yazıyı okumanızı tavsiye ederim.

Attribute routing nedir ?

Kısacası attibute'lar ile yaptığımız rotadır(veya route'dur).

Uygulama :

1.) model-view-controller projesi yaratalım (dotnet new mvc).

2.) HomeController'ın içerisine aşağıdakileri yapıştıralım :

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Routing.Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;

namespace Routing.Controllers
{
    [Route("Ana")]
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }
        [Route("AnaSayfa")]
        public IActionResult Index()
        {
            return View();
        }
        [Route("")]
        public IActionResult Privacy()
        {
            return View();
        }
        [Route("Error")]
        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}


Enter fullscreen mode Exit fullscreen mode

3.) Uygulamamızı çalıştıralım :
Sonuç :
Image description

Gördüğünüz üzere hiçbir sayfa bizi karşılamadı bunun sebebi hiçbir endpoint uygulamamızın eşleşmemesidir.

a.) Şimdi url'imizi aşağıdaki gibi değiştirelim:

https://localhost:5001/Ana
Enter fullscreen mode Exit fullscreen mode

ve enter'layalım.

Image description

Gördüğünüz üzere privacy geldi.

Bunun sebebi HomeController'a route bazında "Ana" dememiz ve privacy'ye route bazında boş bırakmamız. Bu sebep ile privacy ile route'umuz eşleşti.

b.) Şimdi url'imizi aşağıdaki gibi değiştirelim:

https://localhost:5001/Ana/AnaSayfa
Enter fullscreen mode Exit fullscreen mode

Sonuç :
Image description

Sebep : HomeController'a route bazında "Ana",Index'e route bazında "AnaSayfa" dediğimizden dolayı bu sayfayı görüntülüyoruz.

Yazımızın Sonucu :

  • Routing yöntemlerinden birini daha gördük.
  • Attribute routing, conventional routing'i ezer.

Bir dahaki yazımda görüşmek dileğiyle.

En iyi dileklerim ile.

Mustafa Samed Yeyin.

Discussion (0)