2011-06-08 53 views
0

我已经有一些成功将查询结果传递给我的视图。模型大小检查

不幸的是,当生成的模型列表有0个条目时,ASP/Razor代码在foreach中处于劣势。

@foreach (var action in (List<LemonTrader.Models.Lemon>)ViewData["lemons"]) { 
    <tr> 
     <td> 
      @Html.Encode(action.acidity) 

如果没有条目说明有关空例外情况。

处理列表为空的情况的最佳方法是什么?

我想我可以把一个代码块,并让它做一个if/then分支。这似乎偏离了@foreach的优雅剃须刀单行。

我想我可以把空白的东西放在控制器中,然后只显示一些空白。

那些似乎不是非常优雅的方法。

有什么更好的点子?

+0

这很有趣...由于某种原因,它似乎现在优雅地处理它。我不认为我改变了任何东西... – micahhoover 2011-06-08 09:10:13

回答

1

尝试下一步:

  1. 创建模型文件夹(例如LemonsView.cs)附加模型(视图模型),并放有:

    public class LemonList { public IQueryable<Lemon> AllLemons { get; set; } }

  2. 创建一个控制器(LemonController .cs)

    public ActionResult Lemons
    {
    var model = new LemonList();
    var lemons = db.Lemon;

    model.AllLemons = lemons; 
        return View(model); 
    }` 
    
  3. 在View:

    @using LemonTrader.Models.AllLemon小号
    foreach(var item in Model.LemonList) {
    @item.Some
    }

如果结果你将有空,这将是一个空白页

玩得开心!

+0

谢谢!我想我会将其添加到我的控制器类。编写类来携带其他类对我来说不够灵活。 – micahhoover 2011-06-09 01:05:45

+0

不客气! :)你也可以检查控制器是否为模型null,如果它是真的(例如404页面),则显示一个外部视图。只需将返回语句更改为:return model == null?查看(模型):查看(“404view”); – 2011-06-09 05:58:44