使用自定义视图模型时,为什么我的列标题HTML帮助程序不起作用?

时间:2013-07-21 14:20:42

标签: asp.net-mvc razor

我创建了一个'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)

但这不起作用。所以我从根本上不明白这里有什么?

1 个答案:

答案 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)

在你的每个循环中。