Сортировка вложенных коллекций с помощью EditorFor - PullRequest
0 голосов
/ 26 мая 2011

Я использую общие шаблоны редактора для рендеринга вложенных коллекций в моем представлении с помощью HTML-помощника EditorFor, как показано ниже. Я не влюблен во все эти вложенные частичные представления, но, делая это таким образом, присваиваю имена соответствующим образом, чтобы они отправляли обратно в мой контроллер в ViewModel без проблем.

Как бы я отсортировал порядок на самом решительном уровне гнезда? В таком случае, как получить «Budget.vbhtml» для отображения в порядке года (по убыванию)?

Заранее спасибо!

Вид верхнего уровня (Organization.vbhtml):

<div id="budgets">
     @Html.EditorFor(Function(org) org.OrganizationBudgets))
</div>

OrganizationBudget.vbhtml:

@ModelType CharityMVC.OrganizationBudget
@Html.EditorFor(Function(ob) ob.Budget)

Budget.vbhtml:

@ModelType CharityMVC.Budget
@Model.Year @Html.EditorFor(Function(b) b.Amount)

UPDATE:

Звучит так, будто я должен делать это в моем контроллере, когда заполняю свой объект Model, но как мне отсортировать дочерние элементы или дочерние элементы в запросе linq? Это мой текущий код:

Function Edit(ByVal id As Integer) As ActionResult
    Dim o As Organization
    Dim ovm As OrganizationViewModel

    'Load the organization from the database
    o = (From org In _db.Organizations _
        Where org.Id = id _
        Select org).FirstOrDefault()

    'Map it to the ViewModel
    ovm = AutoMapper.Mapper.Map(Of Organization, OrganizationViewModel)(o)

    Return View(ovm)

End Function

1 Ответ

0 голосов
/ 27 мая 2011

Мой лучший ответ на данный момент:

Несколько запросов LINQ, заполняющих дочерние свойства, например:

Function Edit(ByVal id As Integer) As ActionResult
    Dim o As Organization
    Dim ovm As OrganizationViewModel

    'Load the organization from the database
    o = (From org In _db.Organizations _
        Where org.Id = id _
        Select org).FirstOrDefault()

    o.OrganizationBudgets = (From ob In _db.OrganizationBudgets _
                             Where ob.OrganizationId = o.Id _
                             Order By ob.Budget.Year Descending _
                             Select ob).ToList()


    'Map it to the ViewModel
    ovm = AutoMapper.Mapper.Map(Of Organization, OrganizationViewModel)(o)

    Return View(ovm)

End Function
...