@model IEnumerable<>内部的强类型帮助程序

本文关键字:强类型 帮助程序 内部 IEnumerable @model | 更新日期: 2023-09-27 18:14:17

为什么我不能在下面的代码中使用强类型的帮助程序?

@using ISApplication.Models
@model IEnumerable<PersonInformation>
@foreach (PersonInformation item in Model)
{
    @Html.LabelFor(model => model.Name) // Error here.
    @item.Name // But this line is ok
    @* and so on... *@
}

错误信息是

The type of arguments for method '...LabelFor<>... ' cannot be inferred from the usage. Try specifying the type arguments explicitly.

任何想法?谢谢。

@model IEnumerable<>内部的强类型帮助程序

试试这个方法。您需要从项目中访问Name。

@foreach (PersonInformation item in Model)
{
    @Html.LabelFor(x => item.Name); 
    @Html.DisplayFor(x =>item.Name)
}

我想我知道你想干什么。

首先,你在lambda表达式中使用的模型参数似乎是一个保留字——这就是导致你的类型错误的原因。

其次,要解决可枚举的问题,要同时得到标签和值,你必须使用IEnumerable

中值的索引例如:

@using ISApplication.Models
@model IEnumerable<PersonInformation>
@
{
  List<PersonalInformation> people = Model.ToList();
  int i = 0;
}
@foreach (PersonInformation item in people)
{
    @Html.LabelFor(m => people[i].Name) // Error here.
    @Html.DisplayFor(m => people[i].Name) // But this line is ok
    @* and so on... *@
    i++;
}
编辑:

这个方法只有一个for循环,因为目前没有必要枚举集合

@using ISApplication.Models
@model IEnumerable<PersonInformation>
@
{
  List<PersonalInformation> people = Model.ToList();
}
@for(int i = 0; i < people.Count; i++)
{
    @Html.LabelFor(m => people[i].Name) // Error here.
    @Html.DisplayFor(m => people[i].Name) // But this line is ok
    @* and so on... *@
}