MVC 6标签助手和foreach

27

我应该给 label 标签助手的 asp-for 属性赋什么值,才能从集合中显示项目。下面的代码会生成编译错误。

@foreach (var item in Model)
{
    <label asp-for="item.BookingCode"></label>
}

1
什么是错误,在模型中我认为你有一组相同的项目,所有项目将包含相同的属性名称用于相同的值。 - Mustafa ASAN
是的,你说得对。我实际上是在寻找一种显示数值的方法,但显然MVC6尚未提供标签助手。错误是因为范围中没有“item”,这是有道理的,因为Model.item并不存在。 - Sergey Kandaurov
<label name="BookingCode">@item.BookingCode</label> 我觉得可能是这样的,我实际上还没有遇到过 MVC 6。 - Mustafa ASAN
1
尝试使用IList<T>而不是IEnumerable<T>作为您的模型。 - Jimi
1
你说你的模型是IEnumerable<>。在代码后端将其切换为IList<>,例如在末尾添加'.ToList<>()'。 - Jimi
显示剩余3条评论
2个回答

35

@ 字符转义了默认模型 Lambda 代码。 因此,您可以键入:

@foreach (var item in Model)
{
    <label asp-for="@item.BookingCode"></label>
}

3
在1.0.0-rc1-update1中,以上代码仅打印“BookingCode”文本,而不是BookingCode属性的实际值。 是否有其他解决方案? - Ross
2
由于这是用于标签元素的,因此 asp-for 默认为属性名称而不是 BookingCode 的值。使用 @item.BookingCode 而没有元素来查看值。 - Joel Cunningham
标签助手对于<label>并不是很重要。但如果您想使用它,就像@JoelCunningham所说的那样,使用<label asp-for="@item.BookingCode">@item.BookingCode</label>,asp-for值将显示标题作为属性名称,而在<label ...>...</label>中的@item.BookingCode将显示@item.BookingCode的值。 - nam

-4

我有一种简单的方法来创建列表并显示其属性。

List<string> razones = new List<string>();
foreach (var item in _context.Reason)
{
    razones.Add (item.Description);
}
System.Diagnostics.Debug.WriteLine(razones.Count);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接