【问题标题】:Passing Static List To a view MVC5将静态列表传递给视图 MVC5
【发布时间】:2015-11-04 14:17:20
【问题描述】:

我有一个静态类,其中包含一个由每个模型填充的列表。我想要实现的是将每个模型都放在一个大列表中,然后将该列表按日期排序。然后让每个类按顺序显示在一个大表中(通过部分视图)。这是静态类:

    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;
    }
}

我有一个包含模型参考的“主”视图页面,但我试图将这个特定的静态列表作为与模型不匹配的详细信息部分传递(我希望这是有道理的)。因此,我正在通过调用 DisplayFor 来测试其中一个“详细”视图,如下所示:

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

但是,现在我得到一个错误:

无法从用法中推断方法“System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>, object)”的类型参数。尝试明确指定类型参数。

如何将此列表显式传递给视图? 还是我要处理这个“主/细节”错了?

当我转换它时,我得到一个空引用异常,即使我在列表中有项目:

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

    DisplayFor 需要一个 表达式 作为其输入。它解析表达式以查找表达式引用的成员的任何相关元数据。

    你可以试试

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

    但我不确定您是否可以以这种方式使用字段。公共领域通常不受欢迎,因此公共属性或方法会更好。您可以保留一个 private 字段并在方法中返回它:

    private static List<Inq_DetailsBase> _DetailsList = new List<Inq_DetailsBase>();
    
    public IEnumerable<Inq_DetailsBase> DetailsList {get {return _DetailsList;}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多