Veysel Uğur KIZMAZ

Asp.Net MVC 3 Link İşlemleri

16.06.2012Okunma Sayısı: 13651Kategori: ASP.NET MVC

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:
 
  1. <a href="@Url.Action("Index","Home")">Anasayfa</a>
2. HtmlHelper -> ActionLink() methodu
 
Bu method ile action gerçekleştiren link elemanları oluşturabiliyoruz.
 
Örnek:
 
  1. @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
 
  1. public class HomeController : Controller
  2.  {
  3.      public ActionResult Index()
  4.      {
  5.          return View();
  6.      }
  7.      public ActionResult About()
  8.      {
  9.          return View();
  10.      }
  11.  }
 
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
 
  1. @{
  2.     Layout = null;
  3. }
  4.  
  5. <!DOCTYPE html>
  6.  
  7. <html>
  8. <head>
  9.     <title>Index</title>
  10. </head>
  11. <body>
  12.     <div>
  13.         @Html.ActionLink("Hakkımızda","About","Home")
  14.     </div>
  15. </body>
  16. </html>
 
About.cshtml
 
  1. @{
  2.     Layout = null;
  3. }
  4.  
  5. <!DOCTYPE html>
  6.  
  7. <html>
  8. <head>
  9.     <title>About</title>
  10. </head>
  11. <body>
  12.     <div>
  13.         <a href="@Url.Action("Index","Home")">Anasayfa</a>
  14.     </div>
  15. </body>
  16. </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.
 
 
  1. namespace System.Web.Mvc
  2. {
  3.     public static class BenimUrlHelper
  4.     {
  5.         public static string YeniAction(this UrlHelper link, string action, string controller, string baslik)
  6.         {
  7.             return link.Action(baslik, action, controller);
  8.         }
  9.     }
  10.     namespace Html
  11.     {
  12.         public static class BenimHtmlHelper
  13.         {
  14.             public static MvcHtmlString YeniActionLink(this HtmlHelper helper, string action, string controller, string baslik)
  15.             {
  16.                 return helper.ActionLink(baslik, action, controller);
  17.             }
  18.         }
  19.     }
  20. }
 
Şimdi Index.cshtml ve About.cshtml dosyalarımızı aşağıdaki gibi (yeni methodlarımızla) düzenleyelim.
 
Index.cshtml
 
  1. @{
  2.     Layout = null;
  3. }
  4.  
  5. <!DOCTYPE html>
  6.  
  7. <html>
  8. <head>
  9.     <title>Index</title>
  10. </head>
  11. <body>
  12.     <div>
  13.         @Html.ActionLink("Hakkımızda","About","Home") |
  14.         @Html.YeniActionLink("Hakkımızda yeni", "About", "Home")
  15.     </div>
  16. </body>
  17. </html>
 
About.cshtml
 
  1. @{
  2.     Layout = null;
  3. }
  4.  
  5. <!DOCTYPE html>
  6.  
  7. <html>
  8. <head>
  9.     <title>About</title>
  10. </head>
  11. <body>
  12.     <div>
  13.         <a href="@Url.Action("Index","Home")">Anasayfa</a> |
  14.         <a href="@Url.YeniAction("Index", "Home")">Yeni Anasayfa</a>
  15.     </div>
  16. </body>
  17. </html> 
 
Projemizi çalıştırıp sonuçları inceleyelim.
 
 
 
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com