ASPNET MVC DropDownList Doldurma Yöntemleri


Sıklıkla bana sorulan sorulardan anladığım kadarıyla ASPNET MVC de DropDownList doldurma ile ilgili çok fazla problem yaşanıyor. Aslında problem yaşanacak bir durum ortada bulunmuyor. Sadece biraz pratik eksikliği ve bilgi eksikliği buna sebep oluyor diyebiliriz. Bu yazı da bu yaşanan problemleri gidermeye çalışıyor olacağım.

DropDownList’i 3 yöntemle doldurma ve kullanmayı örnekliyor olacağım. Peki bunlar nedir?

  • ViewBag ile DropDownList doldurma ve verileri alma
  • Model ile DropDownList doldurma ve verileri alma
  • Model ve JQuery ile Bağlantılı DropDownList doldurma ve verileri alma

Genel olarak örnek proje hakkında kısa bilgi vermek istiyorum.

Amacımız

Amacımız Ülkeleri(Country) ve şehirleri(City) ayrı DropDownList’lerde göstermek. Bunun için Country ve City isimli iki sınıf oluşturdum. Bu sınıflar içinde static birer metot tanımladım. Bu metot da örnek City ve Country listesi oluşturuyorum. Böylece denemelerimiz de kullanacağımız veriyi bizim için oluşturacaktır.

DBContext isimli bir class ekledim. Bu class sanki bizim veritabanı nesnemiz gibi davranacak ve içerisinde bulunan iki değişkene örnek verileri Country ve City class’larındaki metotları(yukarıda bahsettiğim) kullanarak bize istediğimiz de veriyi sunacaktır. Bu property’ler CitiesTable ve CountryTable dır.

Sayfamız da iki adet DropDownList olacak ve bunları sayfanın GET action’ında yukarıda bahsettiğim yöntemlerle dolduruyor olacağız. POST action’ında ise seçilen değerleri alıyor ve tekrar aynı sayfanın altında bulunan bir boostrap alert kutusunda gösteriyor olacağız. Index sayfamızın model’i IndexViewModel isimli bir class’dır. Bu class ‘da sayfanın GET action’ında seçili değerlerin gelmesi veya sayfanın POSt işleminde seçilen değerleri alabilmemiz için iki property bulunmaktadır. Seçili Country yi almak için SelectedCountryId ve seçili City yi almak için SelectedCityId property leri bulunmaktadır. Tabi seçilen city ve country verisinin Id değerini alıyor olacağız.

ViewBag ile DropDownList Doldurma ve Verileri Alma

drop-down-list-viewbag-sample

Aşağıdaki kodlarda gerekli açıklamaları yazdım. Kısaca Index ‘in GET action ‘ında ViewBag’lere gerekli SelectList’leri ekliyoruz. Index sayfasında ise DropDownListFor ile sayfanın model’ine DropDownListFor kullanarak DropDownList’leri bağlıyor ve ViewBag’den verilerini yüklüyoruz. Düğmeye basıp POST işleminde değerleri alarak yine aynı sayfayı yüklüyor ve seçili değeleri alert kutusunda gösteriyoruz.

kmb-udemy-reklam

Gerekli açıklamalar kod içerisinde yapılmıştır. Veritabanı kullanılmadan, Fake olarak modellenmiştir.
Country ve City class'larında veri üreten metotlara yer verilmiştir.

using System.Collections.Generic;
using System.Diagnostics;
using System.Web.Mvc;
namespace WebApplication8.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
// Sayfaya DropDownList verilerinizi model kullanmadan
// göndermek isterseniz ViewBag kullanabilirsiniz.
// Gönderdiğimiz veriler DropDownList de kullanılacağı için SelectList e çevirmeyi unutmuyoruz.
ViewBag.CitiesData = new SelectList(DBContext.CitiesTable, "Id", "CityName");
ViewBag.CountriesData = new SelectList(DBContext.CountriesTable, "Id", "CountryName");
// Seçili gelmesi istenilen DropDownList item'larının değerleri
// bu şekilde gönderilebilir.
IndexViewModel model = new IndexViewModel()
{
SelectedCountryId = 2,
SelectedCityId = 17
};
return View(model);
}
[HttpPost]
public ActionResult Index(IndexViewModel model)
{
// Ya da bu noktaya F9 klavye kısayolu ile bir BreakPoint koyarak
// Debug ederek "model" değişkeninin üzerine fare ile gelerek o an ki
// değerlerini inceleyebilirsiniz.
// ViewBag değerleri bildiğiniz üzere içinde bulunduğu action çalıştıktan sonra ölür.
// POST işlemi sonrasında aynı sayfa tekrar açılacak ise, ViewBag değerlerini tekrar yüklemeliyiz.
ViewBag.CitiesData = new SelectList(DBContext.CitiesTable, "Id", "CityName");
ViewBag.CountriesData = new SelectList(DBContext.CountriesTable, "Id", "CountryName");
return View(model);
}
}
}
namespace WebApplication8
{
public class City
{
public int Id { get; set; }
public string CityName { get; set; }
public int CountryId { get; set; }
// 10 adet şehir içeren list üreten bir metot.
public static List<City> GetFakeCities()
{
return new List<City>()
{
new City() { Id=11, CityName = "Leicester", CountryId=0 },
new City() { Id=12, CityName = "Sunderland", CountryId=0 },
new City() { Id=13, CityName = "Bath", CountryId=1 },
new City() { Id=14, CityName = "Leeds", CountryId=1 },
new City() { Id=15, CityName = "Dallas", CountryId=2 },
new City() { Id=16, CityName = "Lancaster", CountryId=2 },
new City() { Id=17, CityName = "Tampa", CountryId=2 },
new City() { Id=18, CityName = "Christchurch", CountryId=2 },
new City() { Id=19, CityName = "Laredo", CountryId=3 },
new City() { Id=20, CityName = "Indianapolis", CountryId=3 },
};
}
}
public class Country
{
public int Id { get; set; }
public string CountryName { get; set; }
// 4 adet ülke içeren list üreten bir metot.
public static List<Country> GetFakeCountries()
{
return new List<Country>()
{
new Country() { Id= 0, CountryName = "Morocco" },
new Country() { Id= 1, CountryName = "American Samoa" },
new Country() { Id= 2, CountryName = "New Zealand" },
new Country() { Id= 3, CountryName = "Channel Islands" },
};
}
}
// DBContext i temsil eden fake bir class
// Fake olarak ürettiğim verileri bana sunacak.
// Sizin verileriniz DB ya da istediğiniz kaynaktan gelebilir.
public static class DBContext
{
public static List<Country> CountriesTable = Country.GetFakeCountries();
public static List<City> CitiesTable = City.GetFakeCities();
}
// Index sayfasında kullanacağımız view modelimiz
public class IndexViewModel
{
// Sayfa GET anında bu property ler ile seçili ülke/şehir Id gönderilebilir
// ya da POST işleminde seçili ülke/şehir Id elde edilebilir.
// MVC kendisi seçili değeri bize bu property 'lere dolduracaktır.
public int SelectedCountryId { get; set; }
public int SelectedCityId { get; set; }
}
}

view raw
1. HomeController.cs
hosted with ❤ by GitHub

@model IndexViewModel
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>DropDownList Mevzusu</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<h2>Drop Down Sample</h2>
<hr />
@* POST işlemi için BeginForm metodu ile Form elementi oluşturmayı unutmuyoruz.. *@
@using (Html.BeginForm())
{
<div class="col-md-12">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-md-2">Country :</label>
<div class="col-md-5">
@Html.DropDownListFor(m => m.SelectedCountryId, (SelectList)ViewBag.CountriesData, "Lütfen Seçiniz", new { @class = "dropdown form-control" })
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2">City :</label>
<div class="col-md-5">
@Html.DropDownListFor(m => m.SelectedCityId, (SelectList)ViewBag.CitiesData, "Lütfen Seçiniz", new { @class = "dropdown form-control" })
</div>
</div>
<hr />
<div class="col-md-7 text-right">
<button type="submit" class="btn btn-success">Gönder</button>
</div>
</div>
</div>
}
</div>
</div>
</body>
</html>

view raw
2. Index.cshtml
hosted with ❤ by GitHub

Model ile DropDownList Doldurma ve Verileri Alma

Bu yöntemde ise, IndexViewModel’i biraz daha genişleterek önceki yöntemde ViewBag ‘e attığımız SelectList verisini IndexViewModel’e ekliyoruz. Böylece Model ile beraber sayfamıza gidiyor olacaktır. DropDownListFor ‘larda Model üzerinden verileri yükleme yapıyoruz. Diğer kısımlar aynı kalmaktadır.

drop-down-list-model-sample

Gerekli açıklamalar kod içerisinde yapılmıştır. Veritabanı kullanılmadan,
Fake olarak modellenmiştir. Country ve City class'larında veri üreten metotlara yer verilmiştir.

using System.Collections.Generic;
using System.Web.Mvc;
namespace WebApplication8.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
// Sayfaya DropDownList verilerinizi model ile göndermek isterseniz.
// IndexViewModel tipindeki modelimizde 2 adet SelectList tipinde property tanımlıyoruz.
// Verilerimiz bu property ler ile View'a gidecektir.
// Gönderdiğimiz veriler DropDownList de kullanılacağı için SelectList e çevirmeyi unutmuyoruz.
SelectList citiesData = new SelectList(DBContext.CitiesTable, "Id", "CityName");
SelectList countriesData = new SelectList(DBContext.CountriesTable, "Id", "CountryName");
// Seçili gelmesi istenilen DropDownList item'larının değerleri
// bu şekilde gönderilebilir.
IndexViewModel model = new IndexViewModel()
{
SelectedCountryId = 2,
SelectedCityId = 17,
CitiesData = citiesData,
CountriesData = countriesData
};
return View(model);
}
[HttpPost]
public ActionResult Index(IndexViewModel model)
{
// Ya da bu noktaya F9 klavye kısayolu ile bir BreakPoint koyarak
// Debug ederek "model" değişkeninin üzerine fare ile gelerek o an ki
// değerlerini inceleyebilirsiniz.
// Model içinde gönderdiğimiz citiesData ve countriesData verileri View'dan alınmaz.
// POST işlemi sonrasında aynı sayfa tekrar açılacak ise,
// Model e değerlerini tekrar yüklemeliyiz.
// Bu verileri bir Cache mekanizmasından yükleyerek sürekli DB ye gitme gerekliliği kaldırabilirsiniz.
// Performans açısından da daha doğru olacaktır. Tabii veriler sürekli değişmiyorsa..!
SelectList citiesData = new SelectList(DBContext.CitiesTable, "Id", "CityName");
SelectList countriesData = new SelectList(DBContext.CountriesTable, "Id", "CountryName");
model.CitiesData = citiesData;
model.CountriesData = countriesData;
return View(model);
}
}
}
namespace WebApplication8
{
public class City
{
public int Id { get; set; }
public string CityName { get; set; }
public int CountryId { get; set; }
// 10 adet şehir içeren list üreten bir metot.
public static List<City> GetFakeCities()
{
return new List<City>()
{
new City() { Id=11, CityName = "Leicester", CountryId=0 },
new City() { Id=12, CityName = "Sunderland", CountryId=0 },
new City() { Id=13, CityName = "Bath", CountryId=1 },
new City() { Id=14, CityName = "Leeds", CountryId=1 },
new City() { Id=15, CityName = "Dallas", CountryId=2 },
new City() { Id=16, CityName = "Lancaster", CountryId=2 },
new City() { Id=17, CityName = "Tampa", CountryId=2 },
new City() { Id=18, CityName = "Christchurch", CountryId=2 },
new City() { Id=19, CityName = "Laredo", CountryId=3 },
new City() { Id=20, CityName = "Indianapolis", CountryId=3 },
};
}
}
public class Country
{
public int Id { get; set; }
public string CountryName { get; set; }
// 4 adet ülke içeren list üreten bir metot.
public static List<Country> GetFakeCountries()
{
return new List<Country>()
{
new Country() { Id= 0, CountryName = "Morocco" },
new Country() { Id= 1, CountryName = "American Samoa" },
new Country() { Id= 2, CountryName = "New Zealand" },
new Country() { Id= 3, CountryName = "Channel Islands" },
};
}
}
// DBContext i temsil eden fake bir class
// Fake olarak ürettiğim verileri bana sunacak.
// Sizin verileriniz DB ya da istediğiniz kaynaktan gelebilir.
public static class DBContext
{
public static List<Country> CountriesTable = Country.GetFakeCountries();
public static List<City> CitiesTable = City.GetFakeCities();
}
// Index sayfasında kullanacağımız view modelimiz
public class IndexViewModel
{
// Sayfa GET anında bu property ler ile seçili ülke/şehir Id gönderilebilir
// ya da POST işleminde seçili ülke/şehir Id elde edilebilir.
// MVC kendisi seçili değeri bize bu property 'lere dolduracaktır.
public int SelectedCountryId { get; set; }
public int SelectedCityId { get; set; }
public SelectList CitiesData { get; set; }
public SelectList CountriesData { get; set; }
}
}

view raw
1. HomeController.cs
hosted with ❤ by GitHub

@model IndexViewModel
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>DropDownList Mevzusu</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<h2>Drop Down Sample</h2>
<hr />
@* POST işlemi için BeginForm metodu ile Form elementi oluşturmayı unutmuyoruz.. *@
@using (Html.BeginForm())
{
<div class="col-md-12">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-md-2">Country :</label>
<div class="col-md-5">
@Html.DropDownListFor(m => m.SelectedCountryId, Model.CountriesData, "Lütfen Seçiniz", new { @class = "dropdown form-control" })
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2">City :</label>
<div class="col-md-5">
@Html.DropDownListFor(m => m.SelectedCityId, Model.CitiesData, "Lütfen Seçiniz", new { @class = "dropdown form-control" })
</div>
</div>
<hr />
<div class="col-md-7 text-right">
<button type="submit" class="btn btn-success">Gönder</button>
<hr />
<div class="alert alert-success text-center">
<div><b>Selected Country : </b>@Model.SelectedCountryId</div>
<div><b>Selected City : </b>@Model.SelectedCityId</div>
</div>
</div>
</div>
</div>
}
</div>
</div>
</body>
</html>

view raw
2. Index.cshtml
hosted with ❤ by GitHub

Model ve JQuery ile Bağlantılı DropDownList Doldurma ve Verileri Alma

Bu yöntemde Model kullanarak yaptığımız yüklemenin aynısını yapıyoruz. Fakat bu sefer DropDownList’lerin birbiri ile bağlantılı çalışmasını sağlıyoruz. Sayfanın ilk açılışında iki DropDownList’in de seçili gelmemesini sağlayarak, Country(ülke) verisi seçildiğinde JQuery ile City(şehir) verisinin doldurulmasını sağlıyoruz. Bunun için ufak bir JavaScript kodunu Index sayfasına ekledik. Bu script bir ajax request(isteği) yaparak HomeController’daki GetCitiesByCountry isimli metodu asenkron olarak çağırıyor ve seçili CountryId(ülke id sini) de gönderiyor. GetCitiesByCountry isimli metot ise geriye o ülkeye ait şehirleri elde ederek JSON formatında döndürüyor. Elde edilen JSON script kodumuz da City DropDownList’ine dolduruluyor. Seçilen değerler yine POST işleminde elde edilip alert kutusunda gösteriliyor.

drop-down-list-jquery-sample

Gerekli açıklamalar kod içerisinde yapılmıştır. Veritabanı kullanılmadan,
Fake olarak modellenmiştir. Country ve City class'larında veri üreten metotlara yer verilmiştir.

using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
namespace WebApplication8.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
// Sayfaya DropDownList verilerinizi model ile göndermek isterseniz.
// IndexViewModel tipindeki modelimizde 2 adet SelectList tipinde property tanımlıyoruz.
// Verilerimiz bu property ler ile View'a gidecektir.
// Gönderdiğimiz veriler DropDownList de kullanılacağı için SelectList e çevirmeyi unutmuyoruz.
// Ülke seçildikten sonra şehir seçileceği için sadece ülke verisi doldurulur.
SelectList countriesData = new SelectList(DBContext.CountriesTable, "Id", "CountryName");
// Seçili gelmesi istenilen DropDownList item'larının değerleri
// bu şekilde gönderilebilir.
IndexViewModel model = new IndexViewModel()
{
SelectedCountryId = 1,
SelectedCityId = 1,
CountriesData = countriesData,
// Başlangıçta şehir verisi yoktur ama kayıt düzenleme yaparsanız burayı da doldurunuz.
CitiesData = new SelectList(new List<City>())
};
return View(model);
}
[HttpPost]
public ActionResult Index(IndexViewModel model)
{
// Model içinde gönderdiğimiz citiesData ve countriesData verileri View'dan alınmaz.
// POST işlemi sonrasında aynı sayfa tekrar açılacak ise,
// Model e değerlerini tekrar yüklemeliyiz.
// Bu verileri bir Cache mekanizmasından yükleyerek sürekli DB ye gitme gerekliliği kaldırabilirsiniz.
// Performans açısından da daha doğru olacaktır. Tabii veriler sürekli değişmiyorsa..!
SelectList countriesData = new SelectList(DBContext.CountriesTable, "Id", "CountryName");
SelectList citiesData = new SelectList(DBContext.CitiesTable, "Id", "CityName");
model.CitiesData = citiesData;
model.CountriesData = countriesData;
return View(model);
}
// id : CountryId
public JsonResult GetCitiesByCountry(int id)
{
return Json(
DBContext.CitiesTable.Where(ci => ci.CountryId == id).ToList(),
JsonRequestBehavior.AllowGet);
}
}
}
namespace WebApplication8
{
public class City
{
public int Id { get; set; }
public string CityName { get; set; }
public int CountryId { get; set; }
// 10 adet şehir içeren list üreten bir metot.
public static List<City> GetFakeCities()
{
return new List<City>()
{
new City() { Id=11, CityName = "Leicester", CountryId=0 },
new City() { Id=12, CityName = "Sunderland", CountryId=0 },
new City() { Id=13, CityName = "Bath", CountryId=1 },
new City() { Id=14, CityName = "Leeds", CountryId=1 },
new City() { Id=15, CityName = "Dallas", CountryId=2 },
new City() { Id=16, CityName = "Lancaster", CountryId=2 },
new City() { Id=17, CityName = "Tampa", CountryId=2 },
new City() { Id=18, CityName = "Christchurch", CountryId=2 },
new City() { Id=19, CityName = "Laredo", CountryId=3 },
new City() { Id=20, CityName = "Indianapolis", CountryId=3 },
};
}
}
public class Country
{
public int Id { get; set; }
public string CountryName { get; set; }
// 4 adet ülke içeren list üreten bir metot.
public static List<Country> GetFakeCountries()
{
return new List<Country>()
{
new Country() { Id= 0, CountryName = "Morocco" },
new Country() { Id= 1, CountryName = "American Samoa" },
new Country() { Id= 2, CountryName = "New Zealand" },
new Country() { Id= 3, CountryName = "Channel Islands" },
};
}
}
// DBContext i temsil eden fake bir class
// Fake olarak ürettiğim verileri bana sunacak.
// Sizin verileriniz DB ya da istediğiniz kaynaktan gelebilir.
public static class DBContext
{
public static List<Country> CountriesTable = Country.GetFakeCountries();
public static List<City> CitiesTable = City.GetFakeCities();
}
// Index sayfasında kullanacağımız view modelimiz
public class IndexViewModel
{
// Sayfa GET anında bu property ler ile seçili ülke/şehir Id gönderilebilir
// ya da POST işleminde seçili ülke/şehir Id elde edilebilir.
// MVC kendisi seçili değeri bize bu property 'lere dolduracaktır.
public int SelectedCountryId { get; set; }
public int SelectedCityId { get; set; }
public SelectList CitiesData { get; set; }
public SelectList CountriesData { get; set; }
}
}

view raw
1. HomeController.cs
hosted with ❤ by GitHub

@model IndexViewModel
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>DropDownList Mevzusu</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<h2>Drop Down Sample</h2>
<hr />
@* POST işlemi için BeginForm metodu ile Form elementi oluşturmayı unutmuyoruz.. *@
@using (Html.BeginForm())
{
<div class="col-md-12">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-md-2">Country :</label>
<div class="col-md-5">
@Html.DropDownListFor(m => m.SelectedCountryId, Model.CountriesData, "Lütfen Seçiniz", new { @class = "dropdown form-control" })
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2">City :</label>
<div class="col-md-5">
@Html.DropDownListFor(m => m.SelectedCityId, Model.CitiesData, "Lütfen Seçiniz", new { @class = "dropdown form-control" })
</div>
</div>
<hr />
<div class="col-md-7 text-right">
<button type="submit" class="btn btn-success">Gönder</button>
<hr />
<div class="alert alert-success text-center">
<div><b>Selected Country : </b>@Model.SelectedCountryId</div>
<div><b>Selected City : </b>@Model.SelectedCityId</div>
</div>
</div>
</div>
</div>
}
<script>
$("#SelectedCountryId").change(function () {
var ddlCountry = $(this);
var countryId = ddlCountry.val();
if (countryId != "") {
$.ajax({
method: "GET",
url: '@Url.Action("GetCitiesByCountry","Home")' + '/' + countryId,
beforeSend: function () {
// ajax isteği öncesi şehirler silinir.
$("#SelectedCityId option").not(":first").remove();
}
}).done(function (result) {
console.log(result);
// json formatında ülkeye ait şehirler gelir..
// her biri için option elementi oluşturulur
// şehirler(id=SelectedCityId) dropdownlist e eklenir.
for (var i = 0; i < result.length; i++) {
var city = result[i];
var opt = $("<option></option>");
opt.val(city.Id);
opt.text(city.CityName);
$("#SelectedCityId").append(opt);
}
});
} else {
$("#SelectedCityId option").not(":first").remove();
}
});
</script>
</div>
</div>
</body>
</html>

view raw
2. Index.cshtml
hosted with ❤ by GitHub

 

kmb-udemy-reklam

 

ASPNET MVC DropDownList Doldurma Yöntemleri” için 4 yorum

  1. Merhaba hocam bu konu ile ilgili soruyu ben size udemy uzerinden sormuştum ornekler cok güzel. elinize sağlık. Fakat katmansal mimari yaptıgım projede sorun biraz daha farklı bunu yazarak anlatmak zor. :)) Mesela suan viewbag ile istedigim klinige baglı doktorlar edit sayfama geliyor vm ve custom metodla yaptım.Fakat seçili olanı getirmiyor.Dropdownlistfor kullanıyorum.

    Saygılarımla

    Beğen

      1. Murat Hocam,

        Arkadaşın dediği gibi bende hiç bir şekilde ilgili alanı seçili getiremiyorum. Hatta html kodlarına baktığımda Selected = True yazmasına rağmen seçili değil ilgili nesne.

        Beğen

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s