私はちょうど登録しました。これは私の最初の投稿ですので、質問が最善でない場合は私にご負担ください。私は見て、私の要件に合った答えを見つけることができませんでした。これはおそらく私が望むものを達成することができないからです。MVC OrderBy EditorFor IEnumerable
Iがのviewmodelから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;
}
}
boにはたくさんのオブジェクトがあります私がこの質問に無関係なものとして省いたビューモデルです。 DocumentMetadataFieldViewModelは、標準タイプ(int、stringsなど)のいくつかのフィールドで構成されています
私が達成しようとしているのは、このリストに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