none
ASP.NET MVC3 İki Ayrı Modelden Aynı View İçine Veri Çekmek RRS feed

  • Soru


  • Merhaba,

    Urunler Tablsou
    urunid PK,urunadi,urunslogan,urunvitrinresim,uruneklemeta rihi,uruncesitid,urungrubuid


    Urunresimleri Tablosu
    urunresimid,urunresimadi,urunid


    Bu iki tablo içinde iki model oluşturdum.

    Bu iki tablodan urunadi,urunslogan,urunvitrinresim ve diğer tablodan urunresimadi alanlarını
    çekerek bir view içine göndermek istiyorum. 
    Tablolardan ayrı ayrı çekmem gerekiyor. Çünkü ürünler tablosundaki 1 kayıt ile ilgili urunresimleri tablosunda birden çok kayıt bulunmaktadır. Ben aynı view içinde ürünler tablosundan 1 kaydı ve urun resimleri tablosundan o kayda bağlı 5 resmi göstermek istiyorum.


    Lütfen yardımlarınızı Bekliyorum. Beni çok uğraştırdı.
    5 Şubat 2013 Salı 22:46

Yanıtlar

  • İlla Controllerden gönderilecek diye bir şart yok View içinde de veri çekebilirsiniz. Ürünleri model olarak çekin resimleri View içinde çekin. Razor ise;

    <table>
    @{
        foreach(var item in Model)
        {
          var _resimler = db.ÜrünResimleri.Where(p=>p.UrünID==item.Id).Take(5).ToList();
          <tr>
             <td>
                @item.urunadi<br>
                foreach(var resim in _resimler)
                {
                   <img src="@Url.Action("Resim", "Resimler", new {Id=resim.Id})" />
                }
             </td>
          </tr>
    
    }
    </table>

    gibi.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    5 Şubat 2013 Salı 23:28
    Moderatör
  • sayfanın başında

    @model IEnumerable<KonMobilya.Models.Urunler>

    yazıyo sanırım

    onu

    @model KonMobilya.Models.Urunler

    şeklinde düzeltsen olur.

    (yada gelen modeli .toList() ile getirmen lazım eğer IEnumerable kalsın dersen, ama zaten tek ürün getireceğin için, tutupta ürünlistesi getirmeyeceğin için buna gerek yok )


    "Basitçe açıklayamıyorsan eğer, yeterince anlayamamışsındır." Alb. Einstein

    Fırsatlar Dünyası - Windows Phone 8 Uygulaması
    Fırsatlar Dünyası - Windows Market Uygulaması
    http://www.tiravoglu.com


    6 Şubat 2013 Çarşamba 02:30

Tüm Yanıtlar

  • Selam,

    Ürünlü view'a model olarak gönder, resimleri de ViewBag ile gönder.

    .cs

    using (DataContext db = new DataContext())
    {
       var urun = (from c in db.urunler
       where urun_id=1
       select c).firstordefault();
    
       var urunResimleri = (from c in db.urunResimleri
       where urunResim_urun_id=1
       orderby c.urunResim_id
       select c).ToList();
       
       ViewBag.Resimler= urunResimleri;
       return View(urun);
    }

    view da urunbilgilerini zaten model olarak gösterirsin

    resimler için de

    .cshtml

    foreach (projeadi.resimlerModelin item in (ViewBag.Resimler))
    {
    <img src="/resimler/@Html.Raw(item.resim_adi)" />
    }




    "Basitçe açıklayamıyorsan eğer, yeterince anlayamamışsındır." Alb. Einstein

    Fırsatlar Dünyası - Windows Phone 8 Uygulaması
    Fırsatlar Dünyası - Windows Market Uygulaması
    http://www.tiravoglu.com







    5 Şubat 2013 Salı 22:57
  • Sağolun Engin Bey,

    Şöyle bir hata ile karşılaştım. Bunun anlamı nedir acaba...

    The model item passed into the dictionary is of type 'KonMobilya.Models.Urunler', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[KonMobilya.Models.Urunler]'.

    5 Şubat 2013 Salı 23:21
  • İlla Controllerden gönderilecek diye bir şart yok View içinde de veri çekebilirsiniz. Ürünleri model olarak çekin resimleri View içinde çekin. Razor ise;

    <table>
    @{
        foreach(var item in Model)
        {
          var _resimler = db.ÜrünResimleri.Where(p=>p.UrünID==item.Id).Take(5).ToList();
          <tr>
             <td>
                @item.urunadi<br>
                foreach(var resim in _resimler)
                {
                   <img src="@Url.Action("Resim", "Resimler", new {Id=resim.Id})" />
                }
             </td>
          </tr>
    
    }
    </table>

    gibi.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    5 Şubat 2013 Salı 23:28
    Moderatör
  • Teşekkür ederim Önay Bey,

    db.ÜrünResimleri 

    burada DB (Entity DB=new Entity();) nasıl kullanacağım. DB. ile ürün resimleri gelmiyor.

    5 Şubat 2013 Salı 23:41
  • Kodlarınızı görmeden verdiğimiz örneğin çalışmasını bekleyemezsiniz. 

    foreach ten önce db yi deklare edin;

    var db = new Entites();

    gibi.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    6 Şubat 2013 Çarşamba 00:20
    Moderatör
  • sayfanın başında

    @model IEnumerable<KonMobilya.Models.Urunler>

    yazıyo sanırım

    onu

    @model KonMobilya.Models.Urunler

    şeklinde düzeltsen olur.

    (yada gelen modeli .toList() ile getirmen lazım eğer IEnumerable kalsın dersen, ama zaten tek ürün getireceğin için, tutupta ürünlistesi getirmeyeceğin için buna gerek yok )


    "Basitçe açıklayamıyorsan eğer, yeterince anlayamamışsındır." Alb. Einstein

    Fırsatlar Dünyası - Windows Phone 8 Uygulaması
    Fırsatlar Dünyası - Windows Market Uygulaması
    http://www.tiravoglu.com


    6 Şubat 2013 Çarşamba 02:30
  • Ergin Bey ve Önay bey, yardımlarınız için çok teşekkür ederim.

    İyi geceler dilerim.

    6 Şubat 2013 Çarşamba 02:48
  • Merhaba,

    Aslında benim yapmak istediğim işlemin kodları bu fakat 

    The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[KonMobilya.Models.Urunler]', but this dictionary requires a model item of type 'KonMobilya.Models.Urunler'.

    hatası alıyorum.

     Controller

     public ActionResult OturmaModernUrun(int id)
            {

    var urun = (from c in DB.Urunler
                            where c.urunid == id
                            select c).FirstOrDefault();

                var urunResimleri = (from c in DB.UrunResimleri
                                     where c.urunid == id
                                     orderby c.urunresimid
                                     select c).ToList();

                ViewBag.Resimler = urunResimleri;
                return View(urun);

    }

    VIEW

    @model KonMobilya.Models.Urunler

    @section Urunler_Takimlar
    {
    <div><h1 class="neredeyimUrun">@Model.urunadi Oturma Grubu</h1></div>

           <div id="products" style="width: 500px; display: block; float:left">
         <ul>
             @foreach (KonMobilya.Models.UrunResimleri item in (ViewBag.Resimler))
              {
               <li>
                    <img src="../../URUNRESIMLERI/OturmaGrupları/Modern/@item.urunresimadi" alt="@Model.urunadi" height="100" width="150" ></a>
              </li> 
      }
          </ul>  

     <div style="width: 453px; display: block; float:right; vertical-align: top;  margin->
          <span style="font-size: 20px; float:left; padding-">@Model.urunadi</span>
      </div>
          <br>
          <h2 style="font-size: 15px">@Model.urunslogan...</h>  

    }

    Hatayı niye alıyorum. Anlamadım.

    Lütfen yardım ederseniz sevinirim.   





    6 Şubat 2013 Çarşamba 20:03
  • @section neden kullandın? layout içine mi çağırıyorsun?

    "Basitçe açıklayamıyorsan eğer, yeterince anlayamamışsındır." Alb. Einstein

    Fırsatlar Dünyası - Windows Phone 8 Uygulaması
    Fırsatlar Dünyası - Windows Market Uygulaması
    http://www.tiravoglu.com


    7 Şubat 2013 Perşembe 00:25
  • Action'dan tek ürün gönderiyorsunuz ama modeli liste deklare etmişsiniz.

    @model KonMobilya.Models.Urunler
    
    //olan satırda Entity adını yazın, Urunler sanırım entityset'in adı.
    
    @model KonMobilya.Models.Urun
    
    //şeklinde


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    7 Şubat 2013 Perşembe 08:03
    Moderatör