ActionName attribute bir action metodunun farklı isimlerle adlandırılmasını sağlar. Bu işlem iki farklı yolla yapılır.
Birinci yöntem olarak overload edilmiş, yani aynı isimdeki iki metodu birbirinden ayırmak için kullanabiliriz. Örneğin Product controller Details() adında iki metoda sahip olsun. İlk Details() metodu integer tipinde id parametresi alıyor olsun. İkinci Details() metodu parametre almasın. Bu durumda iki metodu birbirinden ayırmak için ActionName attribute kullanılabilir.
İkinci yöntem olarak ise farklı isimdeki metodları aynı isimle çağırmak isteyebiliriz. Yani ilk yöntemin tam tersi bir durum olabilir.
[ActionName(“Edit”)] [AcceptVerbs(HttpVerbs.Get)] public ActionResult Edit_GET(Merchandise merchandiseToEdit) { return View(merchandiseToEdit); } // POST: /Merchandise/Edit [ActionName(“Edit”)] [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit_POST(Merchandise merchandiseToEdit) { try { return RedirectToAction(“Edit”); } catch { return View(); } }
Dikkat: Bir sınıf içinde aynı isimde ve aynı parametreyi alan iki metod bulunamaz. Ancak aynı isimde ve aynı parametre alan iki action olabilir.
Örnekte gördüğümüz gibi iki Edit() metodundan biri HTTP GET operasyonu, diğeri ise HTTP POST operasyonu tarafından çağrılıyor.