【问题标题】:Ordering Entity Framework sub-items for EditorFor为 EditorFor 订购实体框架子项
【发布时间】:2011-04-05 05:43:30
【问题描述】:

我见过Ordering sub-items within ordered items in a Linq to Entities Query,这表明无法让存储库以特定顺序返回实体图中的子项。

如果这是对的,有什么想法可以在 EditorFor 中排序项目吗?

 //This works but returns a random order
 <%: Html.EditorFor(model => model.HPERDET.HORDERS) %>


 //This errors with "Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions."
 <%: Html.EditorFor(model => model.HPERDET.HORDERS.OrderBy(m=>m.APP_DATE)) %>

 //presorting the HORDERS into 
 //a public IOrderedEnumerable<HORDER> SortedHorders { get; set; } 
 //and ordering in my view model works, but breaks the binding because 
 //the generated html inputs no longer have the correct hierarchical names
 <%: Html.EditorFor(model => model.SortedHorders) %>

那么有没有一种方法可以对图中的子实体进行排序,以便将它们与 EditorFor 一起使用,而无需组装 POCO 对象,除了顺序之外的所有复制 EF 对象?

【问题讨论】:

    标签: c# asp.net-mvc entity-framework asp.net-mvc-2 entity-framework-4


    【解决方案1】:

    这是 ViewModel 的绝佳案例。 ViewModel 包装了实体框架模型,并以设计视图所需的方式精确地呈现数据。在 ViewModel 中执行排序并将 EditFor 绑定到自定义排序属性。

    【讨论】:

    • 我已经在使用 ViewModel 来传递额外的数据,但是由于 EF 返回非常大,我试图避免遍历和复制到 POCO 对象中。当您说“包装 EF 模型”时,您是指包装还是“复制内容但调整显示”:在这种情况下,我需要更改的只是顺序,因此复制到我自己的类中会带来很多好处。
    • @Aniih,我认为您正在尝试进行微优化。通常,您希望用户在屏幕上舒适使用的任何内容都不足以担心复制。
    • 你可能是对的,但情况是我正在显示一个大的信息图表(树)折叠下来,然后允许用户选择他们使用 jQuery 看到的信息。也许我应该使用 AJAX 来代替,但是一次性发送所有内容(它是一个 Intranet,因此传输带宽不是问题)似乎是个好主意。我会试试这个副本,看看我的表现如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多