En iyi yanıtlayıcılar
ASP.NET MVC3 İki Ayrı Modelden Aynı View İçine Veri Çekmek

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ı.
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
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 6 Şubat 2013 Çarşamba 07:38
-
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- Düzenleyen Ergin Tıravoğlu 6 Şubat 2013 Çarşamba 02:31
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 6 Şubat 2013 Çarşamba 07:38
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
- Düzenleyen Ergin Tıravoğlu 5 Şubat 2013 Salı 22:59
-
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]'.
-
İ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
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 6 Şubat 2013 Çarşamba 07:38
-
-
-
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- Düzenleyen Ergin Tıravoğlu 6 Şubat 2013 Çarşamba 02:31
- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 6 Şubat 2013 Çarşamba 07:38
-
-
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.
- Düzenleyen Mustafa İlhan 6 Şubat 2013 Çarşamba 21:30
-
@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- Düzenleyen Ergin Tıravoğlu 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