首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将静态列表传递给视图MVC5

将静态列表传递给视图MVC5
EN

Stack Overflow用户
提问于 2015-11-04 14:17:20
回答 1查看 699关注 0票数 0

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

代码语言:javascript
运行
复制
    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如下所示:

代码语言:javascript
运行
复制
@Html.DisplayFor(Inq_MasterList.DetailsList, "Inq_HotScaleDetail")

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

方法'System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>,object)‘的类型参数不能从用法中推断。尝试显式指定类型参数。

如何显式地将此列表传递给视图?还是我说的“主人/细节”是错的?

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

代码语言:javascript
运行
复制
@Html.DisplayFor((Inq_CompositeChain x) => Inq_MasterList.DetailsList, "Inq_HotScaleDetail")
EN

回答 1

Stack Overflow用户

发布于 2015-11-04 14:21:09

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

你可以试试

代码语言:javascript
运行
复制
@Html.DisplayFor( () => Inq_MasterList.DetailsList, "Inq_HotScaleDetail")

但我不确定你能不能用这样的方法。一般情况下,公共领域是不受欢迎的,所以公共财产或方法更好。您可以保留一个私有字段,只需在方法中返回:

代码语言:javascript
运行
复制
private static List<Inq_DetailsBase> _DetailsList = new List<Inq_DetailsBase>();

public IEnumerable<Inq_DetailsBase> DetailsList {get {return _DetailsList;}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33524151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档