Bu makalemizde MVC ile link işlemlerinin nasıl yapıldığını, kendi link methodlarımızı nasıl oluşturacağımızı inceleyelim.
Bu işlem için 2 sınıf methodu üzerinde duracağız.
1. UrlHelper->Action() methodu
Bu method ile action linklerini belirleyebiliriz.
Örnek:
- <a href="@Url.Action("Index","Home")">Anasayfa</a>
2. HtmlHelper -> ActionLink() methodu
Bu method ile action gerçekleştiren link elemanları oluşturabiliyoruz.
Örnek:
- @Html.ActionLink("Hakkımızda","About","Home")
Şimdi bu iki örneği bir uygulamada deneyelim.
Yeni bir Asp.Net MVC 3 (Empty) Web Application (Razor Engine) oluşturalım.
HomeController isiminde bir Controller ekleyelim.
HomeController içine Index ve About actionlarını ve bu actionların viewlarını ekleyelim.
HomeController.cs
- public class HomeController : Controller
- {
- public ActionResult Index()
- {
- return View();
- }
- public ActionResult About()
- {
- return View();
- }
- }
Index viewından yukarıda bahsettiğimiz ActionLink() methodu ile About viewına, About viewından Action() methodu ile Index viewına link verelim.
Index.cshtml
- @{
- Layout = null;
- }
- <!DOCTYPE html>
- <html>
- <head>
- <title>Index</title>
- </head>
- <body>
- <div>
- @Html.ActionLink("Hakkımızda","About","Home")
- </div>
- </body>
- </html>
About.cshtml
- @{
- Layout = null;
- }
- <!DOCTYPE html>
- <html>
- <head>
- <title>About</title>
- </head>
- <body>
- <div>
- <a href="@Url.Action("Index","Home")">Anasayfa</a>
- </div>
- </body>
- </html>
Projemizi çalıştırıp linklere tıkladığımızda sayfalararası gezebildiğimizi görebileceğiz.
Şimdi kendi Action() ve ActionLink() methodlarımızı oluşturalım.
Bu işlem için dikkat etmemiz gereken en önemli nokta: UrlHelper sınıfı System.Web.Mvc namespace’i, HtmlHelper sınıfı System.Web.Mvc.Html namespace’i altındadır. Bu kriterlere uygun olarak yeni bir class oluşturalım ve kodumuzu yazalım.
- namespace System.Web.Mvc
- {
- public static class BenimUrlHelper
- {
- public static string YeniAction(this UrlHelper link, string action, string controller, string baslik)
- {
- return link.Action(baslik, action, controller);
- }
- }
- namespace Html
- {
- public static class BenimHtmlHelper
- {
- public static MvcHtmlString YeniActionLink(this HtmlHelper helper, string action, string controller, string baslik)
- {
- return helper.ActionLink(baslik, action, controller);
- }
- }
- }
- }
Şimdi Index.cshtml ve About.cshtml dosyalarımızı aşağıdaki gibi (yeni methodlarımızla) düzenleyelim.
Index.cshtml
- @{
- Layout = null;
- }
- <!DOCTYPE html>
- <html>
- <head>
- <title>Index</title>
- </head>
- <body>
- <div>
- @Html.ActionLink("Hakkımızda","About","Home") |
- @Html.YeniActionLink("Hakkımızda yeni", "About", "Home")
- </div>
- </body>
- </html>
About.cshtml
- @{
- Layout = null;
- }
- <!DOCTYPE html>
- <html>
- <head>
- <title>About</title>
- </head>
- <body>
- <div>
- <a href="@Url.Action("Index","Home")">Anasayfa</a> |
- <a href="@Url.YeniAction("Index", "Home")">Yeni Anasayfa</a>
- </div>
- </body>
- </html>
Projemizi çalıştırıp sonuçları inceleyelim.
Veysel Uğur KIZMAZ