MVC 5'te Öznitelik Yönlendirme
MVC 5'ten önce routes.MapRoute(...)
RouteConfig.cs dosyasını çağırarak URL'leri belirli eylemlere ve denetleyicilere eşleyebilirsiniz . Bu, ana sayfanın url'sinin saklandığı yerdir ( Home/Index
). Ancak, varsayılan rotayı aşağıda gösterildiği gibi değiştirirseniz,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
bunun diğer işlemlerin ve denetleyicilerin URL'lerini etkileyeceğini unutmayın. Örneğin, adlandırılmış bir denetleyici sınıfınız varsa ExampleController
ve bunun içinde bir eylem yöntemi çağrıldıysa DoSomething
, ExampleController/DoSomething
varsayılan yol değiştiği için beklenen varsayılan url artık çalışmayacaktır.
Bunun için bir geçici çözüm, varsayılan yolla uğraşmamak ve RouteConfig.cs dosyasında diğer eylemler ve denetleyiciler için yeni yollar oluşturmaktır.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Example",
url: "hey/now",
defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);
Şimdi sınıfın DoSomething
eylemi ExampleController
url ile eşlenecek hey/now
. Ancak, farklı eylemler için rotalar tanımlamak istediğiniz her seferde bunu yapmak yorucu olabilir. Dolayısıyla, MVC 5'te artık url'leri böyle eylemlerle eşleştirmek için öznitelikler ekleyebilirsiniz,
public class HomeController : Controller
{
// url is now 'index/' instead of 'home/index'
[Route("index")]
public ActionResult Index()
{
return View();
}
// url is now 'create/new' instead of 'home/create'
[Route("create/new")]
public ActionResult Create()
{
return View();
}
}