我创建了一个ViewModel,用作我的视图模型。在视图模型中,它包含以下定义:public class ItemDetailViewModel{ public int ItemId { get; set; } public bool Active { get; set; } public string Name { get; set; } public string Description { get; set; } public List<ItemDetailItemOptionViewModel> ItemOptions { get; set; }}如您所见,它包含一个名为ItemOptions的List 。我的视图模型绑定到ItemDetailViewModel。在视图中,我遍历列表中的每个元素并输出它们:@model app1.Models.ViewModels.ItemDetailViewModel@{ ViewBag.Title = "Item " + @Html.DisplayFor(model => model.ItemId);}//...<thead> <tr> <th>Active</th> <th>Names</th> </tr></thead><tbody> @foreach (app1.Models.ViewModels.ItemDetailItemOptionViewModel ItemOption in Model.ItemOptions) { <tr> <td>@ItemOption.Active</td> <td>@ItemOption.Name</td> </tr> }</tbody>//...我想要做的是,而不是硬编码名称和值,我希望能够使用我在页面中其他位置使用的帮助程序,例如:@Html.DisplayNameFor(model => model.ItemCode)@Html.DisplayFor(model => model.ItemCode)我尝试了以下@Html.DisplayNameFor(model => model.ItemOptions.ItemCode)@Html.DisplayFor(model => model.ItemOptions.ItemCode)但这会产生以下错误:  错误1'System.Collections.Generic.List '  不包含“ ItemCode”的定义,也没有扩展方法  'ItemCode'接受类型的第一个参数  'System.Collections.Generic.List '  可以找到(您是否缺少using指令或程序集  参考?).... \ Views \ Item \ Details.cshtml 87 81 []我也尝试关闭我循环的ItemOption对象,但遇到类似问题。我究竟做错了什么? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 ItemOptions是List<>,因此它本身没有ItemCode的定义。但是,该列表中的任何元素都可以。像这样:@Html.DisplayNameFor(model => model.ItemOptions.First().ItemCode)@Html.DisplayFor(model => model.ItemOptions.First().ItemCode)首先,如果列表没有元素,这看起来可能会引发错误,但这是视图引擎的一个怪癖,它实际上并未在列表上调用.First(),它只是使用引用来确定类型从中收集信息。在这种情况下,First()返回的类型为ItemDetailItemOptionViewModel,因此它将从该类型获取所需的元数据。 (adsbygoogle = window.adsbygoogle || []).push({});
09-26 19:10