Forum

asp.net mvc de mast...
 
Bildirimler
Hepsini Temizle

asp.net mvc de masterpage'e db den veri çekmek?

15 Yazılar
3 Üyeler
0 Reactions
2,238 Görüntüleme
(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

Merhaba; Mvc de view içine controler oluşturarak controler içinde bağlantıkurarak veri çekiyoruz. masterpage içine db den veri çekmek istediğimizde nasıl controler oluşturuyoruz. yada bu tip bir iş için metod nedir?

 
Gönderildi : 02/05/2011 03:36

(@AbdullahUgraskan)
Gönderiler: 13
Active Member
 

Merhaba, soruyu biraz daha açar mısınız ?

 
Gönderildi : 02/05/2011 11:38

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

açıklayayım.

 view içindeki bir sayfaya controler içindeki bir controlerden veri çekiyoruz. mesela anasayfacontroler isimli bir controlerimiz olsun. bunun içinde 

public ActionResult Giris() bunun altına db den tablo verilerini çekecek kodları giriyoruz. ve giris sayfasındada verileri listeletebiliyoruz. yani giris sayfasına dbvden veri çekmek için controler de ilgili actionresult u dolduruyoruz. ancak benim farklı bir klasörde master page'im var. bunun içinde db den veri çekmek isterken hangi kontrolerin actionresult'ına kod yazmam gerekiyor. yada farklı bir şekilde sorayım. master page içerisinde menü isimlerini dbden çekeceğim.entity data modal ile. bunu nasıl yapabilirim? 

 
Gönderildi : 02/05/2011 13:32

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

Biraz daha açık yazayım. ben master page içine menü koyacağım. ve menü isimleri dinamik olacak. db den çekilecekler. db den kategori isimlerini çekip masterpagenin içine nasıl koyabilirim? bu konuda yardımcı olabilirmisiniz?

 
Gönderildi : 02/05/2011 18:14

(@AbdullahUgraskan)
Gönderiler: 13
Active Member
 

Merhaba, bir tane method yazıp bu istediğinizi yapabilirsiniz. Örneğin;

 public static IEnumerable<menu> getMenu() { 
        var result = context.menu.ToList();
        return result;
 }

gibi.. sonra istediğiniz yerden buna erişip menü elemanlarını çekebilirsiniz.

 
Gönderildi : 02/05/2011 19:28

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

uzun süre çözmeye çalıştım farklı kaynaklarıda inceledim. ancak çözemedim. bu konuyu dtaylıca anlatabilir misiniz? ilişkili olduğu kısımlarla birlikte?

 
Gönderildi : 03/05/2011 04:33

(@AbdullahUgraskan)
Gönderiler: 13
Active Member
 

Böyle bir durumda 2 seçeneğiniz buluyor. Biri direk master page içerisine istediğiniz kodu yazmak. Yani; Razor view engine kullanıyorsanız @{ buraya } aspx kullanıyorsanız <% buraya %> Bu önerilen bir kullanım değildir. 2. bir yöntemde yukarıda ki örnekte belirttiğim gibi bir method yazıp ister master page den ister diğer sayfalardan bu methoda erişip istediğiniz veriyi çekmek yada istediğiniz işlemi yapmak. Verdiğim örneği biraz açayım isterseniz.

menu adında bir entity sınıfım var olduğunu varsayıyorum. Normalde bu class ı controller kısmında nasıl kullanıyorsak aynı şekilde yazdığımız methodda da kullanıyoruz. Aşağıda menu içindeki verinin listesini alıp IEnumerable olarak geriye döndürüyoruz.

public static IEnumerable<menu> getMenu() {
        var result = context.menu.ToList();
        return result;
}

Master page yada x bir sayfada bunu kullanmak içinde basit bir foreach ile verilerimizi listeliyoruz.

foreach (var item in getMenu())
{
Response.Write(item.adi); // menu içinde adi adında bir alan olduğunu varsayıyorum.

 
Gönderildi : 03/05/2011 11:35

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

Üç farklı göreve bölerek bunu yapabilirsiniz.

1.Veritabanından item'ların bir listesini nasıl alınır?

 Temel olarak;

using (var dbContext = new DbContext())
{
    var categoryList = dbContext.MyCategories.ToList();
}

 

2. View içine controller 'dan items'ların bir listesini nasıl transfer edilir?

 Bunu yapmanın en basit yöntemi  ViewData sözlüğünü kullanmaktır.Bu dictionary view ve controller için her ikisi içinde geçerlidir.

public ActionResult Index()
{
    using (var dbContext = new DbContext())
    {
        var categoryList = dbContext.MyCategories.ToList();
        ViewData["MyCategories"] = categoryList ;
    }
  
    return View();
}

 

3.Bir menü olarak items 'lar nasıl render edilir?

Bu yapmak istediğim menüye bağlı olarak çok spesifik olabilir.Birkaç ürün için bir menü oluşturabilirsiniz.Ayrıca MVC3 için yeni razor view motorunu kullandığını farzedelim.Eğer buna benzer bir şey yapmak istersen;

 

<ul class="product-menu">
    @foreach (var categoryItem in (IEnumerable<MyCategory>)ViewData["MyCategories"]) {
        <li>@Html.ActionLink(categoryItem.Name, "Category", "Product", new { id = categoryItem.Id })</li>
    }
</ul>

 

Saygılar,

 
Gönderildi : 03/05/2011 11:55

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Neden soru sorduktan sonra insanlar neden teşekkür etmezler hiç anlamamışımdır.

 
Gönderildi : 05/05/2011 23:30

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

Güzel sordun. Dostum dediğim gibi benim cahilliğime verebilirsin. tam olarak kafamda oturmadı daha. uygulamayı gelişitirirken farklı kısımlarına geçtim bu sıktıntıyı aşamayınca. ve hala bu kısma dönemedim şuan için. döndüğümde anlatılanları harfiyen uygulamaya çalışacağım. ve işin içinden çıkamazsan yine önüme çıkan soruları soracağım diye düşündüğüm için hiç dokunmadım. daha deneme yapmadım bu kısım için yani. ben şimdiden teşekkür ederim. ancak bu kısma gelince takılırsam yazacağım yine inşallah. yardımlarınız için sağolun.

 
Gönderildi : 07/05/2011 03:48

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

dostum bahsettiğin şekilde yapamadım. 🙁 ancak araştırdığım kadarıyla farklı bir metod denedim. entity data modal oluşturdum. ve controler içinden bir user kontrol oluşturttum. bu user kontrolünede gerekli şekilde db bağlantısını kontrolerin içinden sağladım. ancak şu hatayı veriyor. bir yerde hata yaptım ama sebebini bulamadım çözemedim. 

 

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 

Line 15:     </tr>
Line 16: 
Line 17: <% foreach (var item in Model) { %>
Line 18:     <tr>
Line 19:         <td>

 

 

Bu şekilde diyor. nedir yanlışım acaba?  diğer arkadaşlarda bilen varsa yardımcı olabilirmi?

 
Gönderildi : 08/05/2011 00:48

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

şunu farkettim. controllerden sağ tıklayıp oluşturuyorum sayfayı. oluşan sayfada foreach içinde db nin sutun isimleri yok. yani şu şekilde satırlar gelmiyor. 

 <% item.adi %> 

 <% item.soyadi%> 

 <% item.mail %>  

 

gibi. sanki bunlara ulaşamadan oluşturuyor sayfayı...

nedir sorun tam olarak?

 

 
Gönderildi : 08/05/2011 02:06

(@AbdullahUgraskan)
Gönderiler: 13
Active Member
 

Arkadaşım aşağıda ki videoları şiddetle izlemeni tavsiye ediyorum. Son sorduğun sorulardan hiç bir şey anlamadım 🙁 Videoları izlersen kafanda bir şeyler oluşur diye düşünüyorum. (reklam olarak algılanmasın lütfen)

http://www.apostylee.com/mvc-ye-giris-video/

http://www.apostylee.com/ado-net-entity-framework-e-giris-video/

http://www.apostylee.com/ado-net-code-first-ctp5-video/ 

 
Gönderildi : 09/05/2011 14:08

(@abdullahkac)
Gönderiler: 80
Estimable Member
Konu başlatıcı
 

Bunları daha önce izledim. bak ikinci videoda siz normal sayfalar için list olayını yaptınız ado.net entity data model ile. ben aynısını aspx sayfaya değilde. user kontrol için yapıyorum. ve bu user kontrolüde master pagenin içine gömüyorum bunu yaptığımda hata veriyor. ben kendi uygulamam içinde bir sayfa içine list olayını yaptığımda sorunsuz çalışıyor. ama siz bir deneyim aynı şekilde user kontrol oluşturup bunu master page nin içine koyun. göreceksiniz hatayı şu şekilde bir hata veriyor.

 

Object reference not set to an instance of an object.

 

yukarıda tam olarak yazdım. foreach kısmını gösteriyor visual studioda. ve sonra yukardaki hatayı veriyor. zannediyorum bu olayı user kontrol için yapıp masterpage e gömünce farklı bir olay daha yapılması gerekiyor. bu konuda yardımcı olurmusunuz? 

 

 
Gönderildi : 09/05/2011 14:35

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

Kullandığın model özelliği için IEnumerable nesnesiyle atanmasını gerekiyor.Bunun için google'da  "strongly typed view asp.net mvc" olarak arama yaparsan o zaman istediğin kodları bulabilirsiniz.

 

Saygılar,

 
Gönderildi : 11/05/2011 15:59

Paylaş: