2011-05-14 140 views
-2

我在控制器中写了类似这样的东西。ASP.NET Mvc问题

public ActionResult Giris() 

    { 

     ViewData["Tarif"] = (from t in _entities.Tarif 

          join k in _entities.Kullanici on t.KID equals k.KID 

          select new {KAdi = k.KAdi, TAdi = t.TAdi}) 

          .Take(4); 



     return View(); 

    } 

我在查看页面中使用它。

<% foreach (var item in (IEnumerable<dynamic>)ViewData["Tarif"]) { %> 

<div class="begenilen-video" style="float:left"> 

<img class="video-resmi" alt="reklam" src="../../Uygulama/Resimler/Reklam/1.jpg" /> 

<span class="benzer-yemek-tarifi-adi"></span><%=item.TAdi %><br /> 

<span class="benzer-yemek-tarifi-ekleyen">Ekleyen: </span><br /> 

<span class="benzer-yemek-tarifi-izlenme">İzlenme: </span> 

</div> 

<% } %> 

但是,我在select语句中收到错误。如何调用视图页中的项目?

在此先感谢。

+4

什么是错误? – Rob 2011-05-14 10:18:25

回答

1

作为一个猜测,因为你还没有张贴的错误:

对象存储在ViewData["Tarif"]将是类型IQueryable<T>其中T是一个匿名的对象,并在你看来你是铸造IEnumerable<dynamic>的。 IQueryable也被延迟加载,所以你会试图在对象被处置后执行你的查询。

你真的应该创建一个强类型的视图模型

public class ViewModelType { 

    public IEnumerable<TarifType> Tarif { get; set; } 

} 

塔里夫型

public class TarifType { 

    public string KAdi { get; set; } 
    public string TAdi { get; set; } 

} 

控制器

public ActionResult Giris() { 

    var viewModel = new ViewModelType(); 

    viewModel.Tarif = (from t in _entities.Tarif 
         join k in _entities.Kullanici on t.KID equals k.KID 
         select new TraifType { KAdi = k.KAdi, TAdi = t.TAdi } 
        ).Take(4) 
        .ToList(); 

    return View(viewModel); 
} 

视图

<% foreach (var item in viewModel.Tarif) { %> 
    <div class="begenilen-video" style="float:left"> 
    <img class="video-resmi" alt="reklam" src="../../Uygulama/Resimler/Reklam/1.jpg" /> 
    <span class="benzer-yemek-tarifi-adi"></span><%=item.TAdi %><br /> 
    <span class="benzer-yemek-tarifi-ekleyen">Ekleyen: </span><br /> 
    <span class="benzer-yemek-tarifi-izlenme">İzlenme: </span> 
    </div> 
<% } %>