6.3.15

Javascript içerisinde C# List kullanımı

Merhabalar,
MVC projesi geliştirenler dinamik içerikler için genelde javascript methodlarından yararlanır. Bu tür metodlar var olan metodlardan(ajax, getJson, postJson vb.) seçilebileceği gibi kullanıcı tarafından da oluşturulabilir. Bu yazımda Razor View Engine ile oluşturulmuş bir MVC projesi içerisinde, serverda C# ile oluşturduğumuz List objesini javascript tarafında nasıl kullanacağımıza değineceğim.
Senaryomuz şu şekilde olacak;
- Kullanıcının göreceği ekran için Controller içerisinde Home() adında bir Action oluşturulmuş.
- View tarafına oluşturduğum modeli göndermek ve Javascript kullanarak view içerisinde liste içersinde dönerek ekrana listedeki objenin değerlerini göstermek istiyorum.
Server Tarafı Örnek Kodu;
public ActionResult Home()
{
HomeViewModel model = new HomeViewModel();
List<TimeLine> myList= new List<TimeLine>(); 
TimeLine element= new TimeLine ();
element.Name= "abc";
element.About= "ssss";
element.Id = id;

myList.Add(element);

System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
model.JSONList= oSerializer.Serialize(myList);

return View(model);
}
Javascript tarafında listenin kullanılabilir hale gelmesi için listeyi javascript'in anlayacağı hale getirmek amacıyla serializer kullanmamız gerekiyor. Gönderdiğimiz bu bloğun çalışması için de kullanıcı tarafında bunu uygun tipte karşılamamız gerekiyor. Script tarafında ise böyle karşıladığımızı düşünelim.
Kullanıcı Tarafı:
$(function() {
    Draw();
});

function Draw() {
    var tunel = '@Model.JSONList';
    var str = "";
    if (tunel.length > 0) {
        for (var i = 0; i < tunel.length; i++) {
            str += '<span>'+tunel[i].Name+'</span>'+
            '<span>'+tunel[i].Id+'</span>'+
            '<span>'+tunel[i].About+'</span>';
        }
        $("#myDiv").append(str);
    }
}
Burada tunel degiskeni içerisine serverdan gelen listeyi almışız fakat listeyi serialize etmiştik javascript bunu şu an string değer olarak görmekte. Gördüğü değer ise şu şekilde;
var tunel = JSON.parse('[{&quot;Id&quot;:3,&quot;Tarih&quot;:&quot;\/Date(1425506400000)\/&quot;,&quot;Tip&quot;:2,&quot;Hakkinda&quot;:&quot;- Proje, g&#246;rev, todo d&#246;k&#252;mlerini g&#246;ster.&quot;,&quot;Adı&quot;:&quot;Profil Ekranının Tasarlanması&quot;},{&quot;Id&quot;:26,&quot;Tarih&quot;:&quot;\/Date(1425160800000)\/&quot;,&quot;Tip&quot;:1,&quot;Hakkinda&quot;:&quot;Kişisel işlerin d&#252;zenlenmesi i&#231;in geliştirilen proje.&quot;,&quot;Adı&quot;:&quot;Kişisel Yazılım Asistanı&quot;}]')
Bu değeri düzeltmek içinse tekrardan parse etmemiz gerekiyor;
var tunel = JSON.parse('@Html.Raw(Model.JSONList)');
Böylece List şeklinde C# da oluşturduğumuz bir değişkeni rahatça kullanabiliyoruz.
Umarım sizin de işinize yarar.

Hiç yorum yok:

Yorum Gönder