gpt4 book ai didi

c# - 在模型中循环列表时使用 DisplayNameFor 和 DisplayFor

转载 作者:行者123 更新时间:2023-11-30 20:52:29 25 4
gpt4 key购买 nike

我创建了一个 ViewModel,我将其用作 View 的模型。在 View 模型中,它包含以下定义:

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<>。我的 View 模型绑定(bind)到 ItemDetailViewModel。在 View 中,我遍历列表中的每个元素并输出它们:

@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)

但这会产生以下错误:

Error 1 'System.Collections.Generic.List<[].Models.ViewModels.ItemDetailItemOptionViewModel>' does not contain a definition for 'ItemCode' and no extension method 'ItemCode' accepting a first argument of type 'System.Collections.Generic.List<[].Models.ViewModels.ItemDetailItemOptionViewModel>' could be found (are you missing a using directive or an assembly reference?) ....\Views\Item\Details.cshtml 87 81 []

我也尝试过在我循环的 ItemOption 对象上执行此操作,但遇到了类似的问题。我做错了什么?

最佳答案

ItemOptionsList<> , 所以它本身没有 ItemCode 的定义.但是,该列表中的任何元素都可以。像这样:

@Html.DisplayNameFor(model => model.ItemOptions.First().ItemCode)
@Html.DisplayFor(model => model.ItemOptions.First().ItemCode)

乍一看,如果列表没有元素,这可能会引发错误,但这是 View 引擎的一个怪癖,它实际上并不调用 .First()在列表中,它只是使用引用来确定它从中收集信息的类型。 First() 返回的类型是ItemDetailItemOptionViewModel在这种情况下,它会从该类型中获取所需的元数据。

关于c# - 在模型中循环列表时使用 DisplayNameFor 和 DisplayFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com