Atribut Routing di MVC 5
Sebelum MVC 5 Anda dapat memetakan URL ke tindakan dan pengontrol tertentu dengan memanggil routes.MapRoute(...)
file RouteConfig.cs. Di sinilah url untuk beranda disimpan ( Home/Index
). Namun jika Anda mengubah rute default seperti yang ditunjukkan di bawah ini,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
perlu diingat bahwa ini akan memengaruhi URL tindakan dan pengontrol lain. Misalnya, jika Anda memiliki kelas pengontrol bernama ExampleController
dan metode tindakan di dalamnya dipanggil DoSomething
, maka url default yang diharapkan ExampleController/DoSomething
tidak akan berfungsi lagi karena rute default diubah.
Solusi untuk ini adalah tidak mengacaukan rute default dan membuat rute baru di file RouteConfig.cs untuk tindakan dan pengontrol lain seperti itu,
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 }
);
Sekarang DoSomething
tindakan ExampleController
kelas akan dipetakan ke url hey/now
. Tetapi ini bisa membosankan untuk dilakukan setiap kali Anda ingin menentukan rute untuk tindakan yang berbeda. Jadi di MVC 5 Anda sekarang dapat menambahkan atribut untuk mencocokkan url dengan tindakan seperti,
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();
}
}