Veysel Uğur KIZMAZ

Asp.Net MVC 3 Html.Raw Methodu

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

 Bir önceki makalemizde HTML encode ve decode işlemlerini incelemiştik. Örneğimizde HTML tagları kullanılmış string ifade olduğu gibi görünmekteydi. Şimdi Controller’dan html taglarıyla gönderilmiş verilerimizi HTML kodlarını çalıştıracak şekilde nasıl göstereceğimizi inceleyelim.

Yeni bir Asp.Net MVC 3 (Empty) Web Applicatoin oluşturalım ve HomeController isminde Controller’ımızı ekleyelim. HomeController’ın Index() view’ını oluşturalım ve kodunu şu şekilde düzenleyelim.
 
Index.cshtml
 
  1. @{
  2.     Layout = null;
  3. }
  4. <html>
  5. <head>
  6.     <title>Index</title>
  7. </head>
  8. <body>
  9.     <div>
  10.         @{ string isim = "<b><i>Veysel Uğur KIZMAZ</i></b>";}
  11.         @isim
  12.     </div>
  13. </body>
  14. </html>
 
Projemizi çalıştıralm.
 
 
Göründüğü üzere yazdığımız metin olduğu gibi ekranda göründü. Şimdi HTML kodlarının çalışmasını sağlayalım.
 
Index.cshtml
 
  1. @{
  2.     Layout = null;
  3. }
  4. <html>
  5. <head>
  6.     <title>Index</title>
  7. </head>
  8. <body>
  9.     <div>
  10.         @{ string isim = "<b><i>Veysel Uğur KIZMAZ</i></b>";}
  11.         @isim
  12.         <br />
  13.         @Html.Raw(isim)
  14.     </div>
  15. </body>
  16. </html>
Html.Raw methodu ile parametrede verdiğimiz HTML ifadesini render edip ekranda HTML ifadesinin sonucunu göstermektedir.
 
 
Şimdi, bir önceki makalemizdeki örneğimize geri dönelim ve HTML olarak gönderdiğimiz değerleri ekranda render edilmiş şekilde çalıştıralım. Öncelikle örneğimizi yeniden hatırlayalım.
 
HomeController.cs
 
  1. public ActionResult Index()
  2. {
  3.     string baslik = "<p><b><i>Veysel Uğur KIZMAZ</i></b></p>";
  4.     string htmlBaslik = HttpUtility.HtmlEncode(baslik);
  5.     string htmlBaslik2 = HttpUtility.HtmlDecode(htmlBaslik);
  6.     ViewBag.Baslik = baslik;
  7.     ViewBag.HtmlBaslik = htmlBaslik;
  8.     ViewBag.HtmlBaslik2 = htmlBaslik2;
  9.     return View();
  10. }

 

Index.xshtml
 
  1. @{
  2.     Layout = null;
  3. }
  4. <html>
  5. <head>
  6.     <title>Index</title>
  7. </head>
  8. <body>
  9.     <div>
  10.        Baslik : @ViewBag.Baslik
  11.     </div>
  12.     <div>
  13.        Html Baslik : @ViewBag.HtmlBaslik
  14.     </div>
  15.     <div>
  16.        Html Baslik2 : @ViewBag.HtmlBaslik2
  17.     </div>
  18. </body>
  19. </html>
Projemizi çalıştıralım.
 
 
Şimdi kodumuza Html.Raw methodlarını ekleyelim.
 
Index.cshtml
 
  1. @{
  2.     Layout = null;
  3. }
  4. <html>
  5. <head>
  6.     <title>Index</title>
  7. </head>
  8. <body>
  9.     <div>
  10.        Baslik : @Html.Raw(ViewBag.Baslik)
  11.     </div>
  12.     <div>
  13.        Html Baslik : @Html.Raw(ViewBag.HtmlBaslik)
  14.     </div>
  15.     <div>
  16.        Html Baslik2 : @Html.Raw(ViewBag.HtmlBaslik2)
  17.     </div>
  18. </body>
  19. </html>
 
Projemizi çalıştıralım.
 
 
Dikkat edin, HTML taglarıyla yazılmış veriler render edildi, fakat HTML taglarının encode edilmiş hali, HTML taglarına sahip olmadığı için render edilmedi ve olduğu gibi ekranda gösterildi.
 
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com