2011-04-13 28 views
7

Birisi bana neyi yanlış yaptığımı söyleyebilir mi? :-) ViewBag'de anonim bir türün doldurulması, model ciltçi sorunlarına neden oluyor

Ben bu basit sorgusu vardır:

var sample = from training in _db.Trainings 
       where training.InstructorID == 10 
       select new { Something = training.Instructor.UserName }; 

Ve ViewBag bu geçmektedir.

ViewBag.Sample = sample; 

Sonra böyle Bence erişmek istiyorum:

@foreach (var item in ViewBag.Sample) { 
    @item.Something 
} 

Ve 'Something' için bir tanım içermiyor hata mesajı 'nesne' olsun. Eğer oraya koyarsam sadece @item, ben durum { Something = SomeUserName }

Yardım için teşekkürler.

cevap

16

Bu yapılamaz. ViewBag dinamik ve sorun, anonim türün dahili olarak üretilmesidir. o bir `yeni Instructor` a seçerek nasıl dikkat edin -

@model IEnumerable<Instructor> 
@foreach (var item in ViewBag.Sample) { 
    @item.Something 
} 
+1

+1: o zaman

public class Instructor { public string Name { get; set; } } 

ve:

public ActionResult Index() { var mdoel = from training in _db.Trainings where training.InstructorID == 10 select new Instructor { Name = training.Instructor.UserName }; return View(model); } 

ve görünümde Sana bir görünüm modeli kullanılarak öneriyoruz beton türü - anonim tip değil. Böylece nesne içindeki bilgilere erişebilir. –

+0

Yardım etti. Cevabın için teşekkür ederim. –

İlgili konular