RouteConfig.cs
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "haberUrl", url: "{baslik}-{id}", defaults: new { controller = "Home", action = "haber"} ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "test", id = UrlParameter.Optional } ); } } |
HaberUrl adlı bir route oluşturduk. Baslik ve id adında iki tane parametre belirttik ve default sayfası Home controllerın içerisindeki haber ActionResult olacak şekilde routes.MapRoute fonksiyonumuzu oluşturduk.
Controller
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public ActionResult haber() { #region Veriler List<SelectListItem> haberler = new List<SelectListItem>(); haberler.Add(new SelectListItem { Value = "1", Text = "Haber İçeriği-1" }); haberler.Add(new SelectListItem { Value = "2", Text = "Haber İçeriği-2" }); haberler.Add(new SelectListItem { Value = "3", Text = "Haber İçeriği-3" }); haberler.Add(new SelectListItem { Value = "4", Text = "Haber İçeriği-4" }); haberler.Add(new SelectListItem { Value = "5", Text = "Haber İçeriği-5" }); #endregion string id = this.RouteData.Values["id"].ToString(); string baslik = this.RouteData.Values["baslik"].ToString(); baslik = baslik.Replace('-', ' '); ViewBag.Baslik = baslik; SelectListItem model = haberler.Where(x => x.Value == id).FirstOrDefault(); return View(model); } |
haber ActionResultına gelen istekler sonucunda baslik ve id parametrelerini yakalayıp uygun içeriklerin view sayfasını gönderilmesini sağladık.
View
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@model SelectListItem @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>haber</title> </head> <body> <h1>@ViewBag.Baslik</h1> <p>@Model.Text</p> <br /> </body> </html> |
Route Attribute Kullanımı
Projemiz büyüdükçe kullandığımız route yönlendirmeleri artıyor. route daha düzenli ve işlevsel kullanabilmek için route Attributelerini kullanabiliriz.
RouteConfig.cs
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "test", id = UrlParameter.Optional } ); } } |
|
1 |
routes.MapMvcAttributeRoutes(); |
komutu ile route Attributelerimizi aktif hale getiriyoruz.
Controller
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[Route("{baslik}-{id}")] public ActionResult haber() { #region Veriler List<SelectListItem> haberler = new List<SelectListItem>(); haberler.Add(new SelectListItem { Value = "1", Text = "Haber İçeriği-1" }); haberler.Add(new SelectListItem { Value = "2", Text = "Haber İçeriği-2" }); haberler.Add(new SelectListItem { Value = "3", Text = "Haber İçeriği-3" }); haberler.Add(new SelectListItem { Value = "4", Text = "Haber İçeriği-4" }); haberler.Add(new SelectListItem { Value = "5", Text = "Haber İçeriği-5" }); #endregion string id = this.RouteData.Values["id"].ToString(); string baslik = this.RouteData.Values["baslik"].ToString(); baslik = baslik.Replace('-', ' '); ViewBag.Baslik = baslik; SelectListItem model = haberler.Where(x => x.Value == id).FirstOrDefault(); return View(model); } |
|
1 |
[Route("{baslik}-{id}")] |
Route Attributelerimizi kullanmak istediğimiz ActionResultın hemen üstüne tanımlayıp istediğimiz url yapısını oluşturup yönlendirebiliyoruz.
