2
我刚刚注册了,这是我的第一篇文章,所以如果问题不是最好的,请耐心等待。我看了一下,找不到符合我要求的答案;这可能是因为它不可能实现我想要的。MVC OrderBy EditorFor IEnumerable
我有通过从一个视图模型EditorFor字段的IEnumerable列表拉动的部分视图:
@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 2012-03-16 15:02:24
忘了提及 - 感谢您的快速和准确的反应! :) – Mark 2012-03-16 15:07:47