Я только что зарегистрировался, и это мой первый пост, поэтому, пожалуйста, несите меня, если вопрос не самый лучший. Я посмотрел и не могу найти ответ, который соответствует моим требованиям; это возможно потому, что невозможно достичь того, чего я хочу.MVC OrderBy EditorFor IEnumerable
У меня есть частичный вид, который втягивает через IEnumerable список полей EditorFor из ViewModel:
@model DocumentViewModelContainer
@Html.EditorFor(m => m.Document.Metadata)
DocumentViewModelContainer имеет следующий код:
public class DocumentViewModelContainer
{
public DocumentViewModel Document
{
get;
set;
}
DocumentViewModel имеет следующий код:
public class DocumentViewModel
{
public IEnumerable<DocumentMetadataFieldViewModel> Metadata
{
get;
set;
}
}
Есть масса других объектов в бо я рассматривал модели, которые я не учитывал в этом вопросе. DocumentMetadataFieldViewModel состоит из нескольких полей стандартных типов (int, строк и т. Д.).
То, что я пытаюсь достичь, заключается в добавлении OrderBy в этот список, оттянутый путем упорядочивания объектом в модели нижнего вида, например следующим образом:
@model DocumentViewModelContainer
@Html.EditorFor(m => m.Document.Metadata.OrderBy(i => i.InstanceFieldOrder))
Однако это дает ошибку:
System.InvalidOperationException : Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
Я не только очень новой для MVC, но C# в целом; этот проект имел меня изучение языка на лету, поэтому, пожалуйста, играть приятно :)
Спасибо,
Марк
О, но ваше решение работает так хорошо, я плохой человек, если я уже проверил это !? :) Model.Document.Metadata = Model.Document.Metadata.OrderBy (i => i.InstanceMetadataTemplateId) .ThenBy (i => i.InstanceFieldOrder) .ToList(); – Mark
Забыл упомянуть - Спасибо, кстати, за быстрый и точный ответ! :) – Mark