Mar*_*ark 2 ienumerable editorfor asp.net-mvc-partialview asp.net-mvc-3
我刚刚注册了,这是我的第一篇文章,所以如果问题不是最好,请耐心等待.我看了一下,找不到符合我要求的答案; 这可能是因为不可能实现我想要的.
我有一个局部视图,它从视图模型中提取了一个IEnumerable的EditorFor字段列表:
@model DocumentViewModelContainer
@Html.EditorFor(m => m.Document.Metadata)
Run Code Online (Sandbox Code Playgroud)
DocumentViewModelContainer具有以下代码:
public class DocumentViewModelContainer
{
public DocumentViewModel Document
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
DocumentViewModel具有以下代码:
public class DocumentViewModel
{
public IEnumerable<DocumentMetadataFieldViewModel> Metadata
{
get;
set;
}
}
Run Code Online (Sandbox Code Playgroud)
在这两个视图模型中都有大量其他对象,我在这个问题中忽略了这些对象.DocumentMetadataFieldViewModel由几个标准类型的字段组成(int,字符串等)
我想要实现的是通过底层视图模型中的对象排序将OrderBy添加到此列表中,如下所示:
@model DocumentViewModelContainer
@Html.EditorFor(m => m.Document.Metadata.OrderBy(i => i.InstanceFieldOrder))
Run Code Online (Sandbox Code Playgroud)
但是这会给出错误:
System.InvalidOperationException : Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
Run Code Online (Sandbox Code Playgroud)
我不仅对MVC很新,而且对C#来说也是如此; 这个项目让我在飞行中学习语言,所以请玩好:)
谢谢,
标记
您应该在控制器操作中执行此操作,该操作负责检索视图模型并将其传递给视图.
您始终可以在视图中执行以下恐怖操作:
@model DocumentViewModelContainer
@{
Model.Document.Metadata = Document.Metadata.OrderBy(i => i.InstanceFieldOrder).ToList();
}
@Html.EditorFor(m => m.Document.Metadata)
Run Code Online (Sandbox Code Playgroud)
但保证我不会这样做.
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |