Заказ подпунктов Entity Framework для EditorFor
Я видел Упорядочивание вложенных элементов в упорядоченных элементах в запросе Linq to Entities, который предполагает, что нет способа заставить репозиторий возвращать вложенные элементы в графе объектов в определенном порядке.
Если это правильно, есть мысли о том, как заказать элементы в 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, кроме как в порядке?
1 ответ
Решение
Это отличный случай для ViewModel. ViewModels обертывают модель Entity Framework и представляют данные точно так, как того требует представление, для которого они предназначены. Выполните сортировку в ViewModel и привяжите EditFor к пользовательскому свойству.