2011-06-08 88 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