Alper Konuralp

Kartınızı Oluşturun
Google+
Follow @alperkonuralp

Archive for Şubat, 2012

Asp.Net MVC Veri Aktarım Elemanı

Merhaba, MVC ile site geliştiriyorsanız benim karşılaştığım durum ile sizde karşılaşabilirsiniz. Burada olay şöyle gelişiyor:

1. Kişi yeni veri giriş ekranında bir veri giriyor.
2. sistem verinin doğruluğundan emin olduktan sonra veriyi veri tabanına kaydediyor.
3. sonrada işlem listeleme sayfasına devrediliyor.

bu işleme kod olarak baktığımızda :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public class Ornek : Controller
    {
        public ActionResult Index()
        {
            var veriler = VeriKaynagi.VerileriAl();
            return View(veriler);
        }
        public ActionResult Yeni()
        {
            return View(new Veri());
        }

        [HttpPost]
        public ActionResult Ekle(Veri veri)
        {
            if (!ModelState.IsValid)
            {
                return View("Yeni", veri);
            }
            // veriyi veri tabanına kaydeden kodlar

            return RedirectToAction("Index");
        }
    }

Şimdi yapmamız gereken veri doğru olarak kaydedildiğine dair bir bilgiyi sayfaya göndermek istiyorum. Ama bunuda yapıyı bozmadan yapmam lazım. O zaman ilk aklıma ViewBag kullanmak geldi ve kodu şöyle düzelttim :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public class Ornek : Controller
    {
        public ActionResult Index()
        {
            var veriler = VeriKaynagi.VerileriAl();
            return View(veriler);
        }
        public ActionResult Yeni()
        {
            return View(new Veri());
        }

        [HttpPost]
        public ActionResult Ekle(Veri veri)
        {
            if (!ModelState.IsValid)
            {
                return View("Yeni", veri);
            }
            // veriyi veri tabanına kaydeden kodlar
            ViewBag.EkMesaj = "Veriler Başarıyla Kaydedilmiştir.";
            return RedirectToAction("Index");
        }
    }

Çok zekice gelmişti bana ama maalesef kod çalışmadı. Daha doğrusu çalıştı ama ViewBag.EkMesaj her durumda boş geldi. Böyle olunca da Böyle Gitmez Söz Google’da dedim ve bir arama yaptım. Bu tür konularda çoğunlukla karşıma çıkan Stack Overflow‘da aradığım cevabı buldum.
Burada ViewBag’in doğru nokta olmadığı ve bunun yerine TempData elemanının kullanılması gerektiği yazıyordu. Böylece özellikle Redirect işlemlerinde ilk sayfa ikinci sayfaya bir data aktarabiliyordu. İlgili link bu.

O zaman çözüm şöyle olacak:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public class Ornek : Controller
    {
        public ActionResult Index()
        {
            var veriler = VeriKaynagi.VerileriAl();
            return View(veriler);
        }
        public ActionResult Yeni()
        {
            return View(new Veri());
        }

        [[HttpPost]]
        public ActionResult Ekle(Veri veri)
        {
            if (!ModelState.IsValid)
            {
                return View("Yeni", veri);
            }
            // veriyi veri tabanına kaydeden kodlar
            TempData.Add("EkMesaj", "Veriler Başarıyla Kaydedilmiştir.");
            return RedirectToAction("Index");
        }
    }

İyide ön tarafı nasıl yazarız derseniz… ben biraz atraksiyonlu yazdım. Adım adım bakalım. Önce mesajın gözükeceği yeri ayarlamamız lazım. genel geçer bir durum olsun diye ben bu elemanı master layout içine aldım. <body> tagından önceye şöyle bir kod ekledim:

1
2
    @if (TempData.ContainsKey("EkMesaj"))
    {<div id="dEkMesaj">@TempData["EkMesaj"]</div>}

böylece mesaj geldiğinde böyle gözükecek. Bu elemanın görüntü özellikleri için css’e aşağıdakini ekledim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#dEkMesaj
{
    display: none;
    position: fixed;
    top: 0;
    left: 50%;
    margin: 0 0 0 -100px;
    width: 200px;
    background: yellow;
    color: black;
    border: 1px solid darkorange;
    border-top: 0;
    text-align: center;
}

iyi gidiyoruz ama daha bitmedi. Birde olayın atraksiyon tarafını halleden sevgili javascript kodumuz var. Doğal olarak jquery kullanıyoruz:

1
2
3
4
5
6
7
8
9
$(function () {
        if ($('#dEkMesaj').length &gt; 0) {
            $('#dEkMesaj')
                .css({"opacity": 0, "display":"block"}) // görünmez elemanı önce görünür ama görünmez yapıyoruz :D
                .animate({ opacity: 1 }, 500) // sonrada yarım saniyede görünür hale geliyor.
                .delay(3000) // 3 saniye görüntüde kalıyor
                .animate({ opacity: 0 }, 1000, function () { $('#dEkMesaj').hide(); }); // sonrada görüntüden 1 saniyede çıkıyor.
        }
    });

bu mudur? bence budur.
Kolay gele…

Ümraniye Hava Durumu

image

İzmir Yazılım Grubu
Google Groups
Subscribe to İzmir Yazılım Grubu
Email:
Visit this group
Şubat 2012
Pts Sal Çar Per Cum Cts Paz
« Oca    
 12345
6789101112
13141516171819
20212223242526
272829  
Yeni Downloadlar
StatPress
Visits today: 94
Sahip oldugum diger adresler :
3dmaxtraining.info
3dmaxtrainings.com
3dmaxtrainings.info
adobelearning.info
adobelearnings.info
adobetrainings.com
adobetrainings.info
autocadbootcamp.info
autocadexams.info
autodesklearning.info
autodesklearnings.com
autodesklearnings.info
ciscotrainings.info
egepro.com
elonunbahcesi.com
elonunbahcesi.info
flashbootcamp.info
flashexams.com
flashexams.info
konuralp.biz
konuralp.org
mayatutorial.info
mayatutorials.info
microsoftexams.info
microsofttrainings.info
proege.com
sharepointlearning.info
sharepointlearnings.com
sharepointlearnings.info
sharepointtutorial.info
silverlightbootcamp.info
silverlightlearning.info
silverlightlearnings.info
silverlighttraining.info
silverlighttrainings.com
silverlighttrainings.info
silverlighttutorial.info
silverlighttutorials.info
sirasende.info
urunbul.info
yagmurca.com
yagmurca.info