2015-11-04 56 views
0

我有一個靜態類,它包含一個由每個模型填充的列表。我想要達到的目的是讓每個模型都在一個大列表中,然後按日期排序。然後按照該順序將每個班級顯示在一個大表中(通過部分視圖)。繼承人的靜態類:將靜態列表傳遞給視圖MVC5

public static class Inq_MasterList { 
    public static List<Inq_DetailsBase> DetailsList = new List<Inq_DetailsBase>(); 


    public static List<Inq_DetailsBase> CombineModels() { 


     DetailsList.Sort((x, y) => 
      x == null ? (y == null ? 0 : -1) : (y == null ? 1 : x.EventDate.CompareTo(y.EventDate)) 
     ); 

     return DetailsList; 
    } 
} 

我有一個包含模型參考「主」視圖頁面,但我想通過這個特定的靜態列表的排序不匹配模型一節的(我希望是有道理的)。然而

@Html.DisplayFor(Inq_MasterList.DetailsList, "Inq_HotScaleDetail") 

,現在我得到一個錯誤::所以我就的「細節」視圖中的一個測試通過調用DisplayFor這樣

The type arguments for method 'System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>, object)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

我如何能明確地通過這個列表以觀點? 還是我正在討論這個「主/細節」錯誤?

,當我投它,我得到一個空引用異常,即使我有列表中的項目:

@Html.DisplayFor((Inq_CompositeChain x) => Inq_MasterList.DetailsList, "Inq_HotScaleDetail") 

回答

0

DisplayFor需要表達作爲其輸入。它解析表達式以查找表達式引用的成員的任何相關元數據。

您可以嘗試

@Html.DisplayFor(() => Inq_MasterList.DetailsList, "Inq_HotScaleDetail") 

但我不知道你能以這種方式使用的字段。一般來說,公共領域是不被接受的,所以公共財產或方法會更好。您可以保留一個專用字段,並將其僅用方法返回:

private static List<Inq_DetailsBase> _DetailsList = new List<Inq_DetailsBase>(); 

public IEnumerable<Inq_DetailsBase> DetailsList {get {return _DetailsList;}}