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 });
}
}
}
3.) Uygulamamızı çalıştıralım :
Sonuç :
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
ve enter'layalım.
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
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.
Top comments (0)