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