2010-06-29 81 views
0

我有一個索引頁面,顯示數據庫中的分頁數據列表。當該列表爲空時,我想顯示一個「空白石板」視圖,清楚地向用戶指示他們在哪裏以及他們可以在那裏做什麼:「您可以通過單擊此處添加新項目」類型的東西。有沒有一種好的方法來創建呈現ASP.Net MVC中的頁面空白石板?

有沒有更好的/更清潔的方式來做到這一點,而不僅僅是在整個頁面上有一個大的if語句?

<% if (Model.Items.Count > 0) { %> 
     normal view 
<% } 
    else { %> 
     blank slate view 
<% } %> 

回答

0

除了在控制器中重定向到不同的視圖或使用不同的視圖引擎,這是最好的方法。

稍微乾淨一些的替代方法是對網格和分頁使用局部視圖,但在視圖中間仍然有一個If子句。

2

本傑明·安德森的好建議。此外,你很多要考慮的MVCContrib網格(見.Empty法)

http://www.jeremyskinner.co.uk/2009/02/22/rewriting-the-mvccontrib-grid-part-2-new-syntax/

<%= Html.Grid(Model.People).Columns(column => { 
      column.For(x => x.Id).Named("Person ID"); 
      column.For(x => x.Name); 
      column.For(x => x.DateOfBirth).Format("{0:d}"); 
     }) 
     .Attributes(style => "width:100%") 
     .Empty("There are no people.") 
     .RowStart(row => "<tr foo='bar'>") %> 
+0

的MVCContrib電網是質量! ! – s1mm0t 2010-06-29 17:55:44

0

如何以下的HtmlHelper其中viewName是局部視圖的名稱。這不完全是你以後的事情,但可能會提供一個開始。我會考慮的是,假設您有一組可以在空列表中執行的操作列表,您可以創建反映該列表的部分視圖。也許每個控制器都有一個名稱相同的名稱,並且可以替換「NoResultsView」參數。

根據,如果你使用的是在你的項目中的ViewModels - 您可以創建一個命名約定爲結果類型的意見,這可能進一步消除需要對viewName參數

public static MvcHtmlString ResultsView<TModel> (this HtmlHelper helper, IList<TModel> items, string viewName) where TMdodel: class 
{ 
    if (items.Count() != 0) 
    { 
     return System.Web.Mvc.PartialExtensions.Partial(helper, viewName, items); 
    } 
} 
    return return System.Web.Mvc.PartialExtensions.Partial(helper, "NoResultsView", items); // View is Shared 
} 
相關問題