我创建了一个'ViewModel',因为我想要更多的东西可以迭代并在我的View中显示。为了在这个例子中保持这个简单,我的ViewModel除了根本没有使用它之外什么也没做。此外,我正在使用Enitity Framework,因此如果重要的话,ActionRequest最终是SQL Server中的一个表。
这是我的ViewModel:
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)
但这不起作用。所以我从根本上不明白这里有什么?
答案 0 :(得分: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)
在你的每个循环中。