0

我创建了一个“ViewModel”,因为我希望有更多的东西可以迭代并显示在我的视图中。为了在此示例中保持简单,我的 ViewModel 仅在我根本没有使用它的情况下做任何事情。此外,我正在使用 Enitity Framework,因此如果这很重要,ActionRequest 最终是 SQL Server 中的一个表。

这是我的视图模型:

public class ActionRequestVM
{
    public IEnumerable<ActionRequest> ARVM { get; set; }
}

在我看来,在我拥有之前:

@model IEnumerable<PocoExp5.Models.ActionRequest>

现在有了我的 ViewModel 我有:

@model PocoExp5.ViewModels.ActionRequestVM

我可以很好地遍历我的数据,并且全部显示使用:

@foreach (var item in Model.ARVM) { ...

但是,列标题,例如:

 @Html.DisplayNameFor(model => model.RequestID)

不再工作。我以为我可以做类似的事情:

@Html.DisplayNameFor(model => model.ARVM.RequestID)

但这不起作用。所以这里有一些我根本不明白的东西?

4

1 回答 1

0

是的,你错过了这里的重点。由于您 Model.ARVM 本质上是一个 ActionRequest 对象列表,因此:

@Html.DisplayNameFor(model => model.ARVM.RequestID)

什么都不做,因为 RequestID 是 ActionRequest 而不是 ARVM 的属性。我确信如果你用这样的 for 循环替换你的 foreach 循环:

for (int i = 0; i < Model.ARVM.Count; i++)
{
    @Html.DisplayNameFor(model => model.ARVM[i].RequestID)
}

或者,我认为,您可以尝试这样做:

@Html.DisplayNameFor(item => item.RequestID)

在你的每个循环里面。

于 2013-07-21T17:38:42.980 回答