C# 错误:名为';型号';无法在此作用域中声明

C# 错误:名为';型号';无法在此作用域中声明,c#,asp.net-mvc-5.2,C#,Asp.net Mvc 5.2,我正在将列表返回到视图。所以这个模型是可数的。在foreach循环中,它可以很好地获得员工。但当我在循环中使用此模型时,它会给我一个错误: 无法在此作用域中声明名为“Model”的局部变量,因为它将赋予“Model”不同的含义,而“Model”已在“父或当前”作用域中用于表示其他内容 在循环内部,当我使用除Model以外的其他名称时,它工作正常 看法 @模型IEnumerable @foreach (tbEmployee emp in Model) { <tr>

我正在将列表返回到视图。所以这个模型是可数的。在foreach循环中,它可以很好地获得员工。但当我在循环中使用此模型时,它会给我一个错误:

无法在此作用域中声明名为“Model”的局部变量,因为它将赋予“Model”不同的含义,而“Model”已在“父或当前”作用域中用于表示其他内容

在循环内部,当我使用除Model以外的其他名称时,它工作正常

看法 @模型IEnumerable

@foreach (tbEmployee emp in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(Model => emp.empID)
            </td>
            <td>
                @Html.DisplayFor(Model  => emp.empName)
            </td>
            <td>
                @Html.DisplayFor(Model  => emp.empAge)
            </td>
            <td>
                @Html.DisplayFor(Model  => emp.empStatus)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", "Employee")
                @Html.ActionLink("Update", "Update", "Employee")
                @Html.ActionLink("Delete", "Delete", "Employee")
            </td>
        </tr>
    }
@foreach(模型中的TBEMP)
{
@DisplayFor(Model=>emp.empID)
@DisplayFor(Model=>emp.empName)
@DisplayFor(Model=>emp.empAge)
@DisplayFor(Model=>emp.empStatus)
@ActionLink(“编辑”、“编辑”、“员工”)
@ActionLink(“更新”、“更新”、“员工”)
@ActionLink(“删除”、“删除”、“员工”)
}
但当我写的像,它的作品很好

 @foreach (tbEmployee emp in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(x => emp.empID) //where this x get data from
            </td>
            <td>
                @Html.DisplayFor(x => emp.empName)
            </td>
            <td>
                @Html.DisplayFor(x => emp.empAge)
            </td>
            <td>
                @Html.DisplayFor(x => emp.empStatus)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", "Employee")
                @Html.ActionLink("Update", "Update", "Employee")
                @Html.ActionLink("Delete", "Delete", "Employee")
            </td>
        </tr>
    }
@foreach(模型中的TBEMP)
{
@DisplayFor(x=>emp.empID)//此x从何处获取数据
@DisplayFor(x=>emp.empName)
@DisplayFor(x=>emp.empAge)
@DisplayFor(x=>emp.empStatus)
@ActionLink(“编辑”、“编辑”、“员工”)
@ActionLink(“更新”、“更新”、“员工”)
@ActionLink(“删除”、“删除”、“员工”)
}

首先,此错误消息已在较新版本的C#中删除;设计团队认为,它造成的混乱多于防止的错误

问题是,
Model
这个名称在这里用来表示两件事:任何属性或变量都用作
foreach
的集合,以及lambda的形式参数。此外,这两种用法重叠。也就是说,在
foreach
中使用的
Model
直接超出了
Model
作为
foreach
内部形式的使用范围。基本上,这里的编译器会说“您正在创建一种情况,在这种情况下,您可能会使用相同的名称来表示两个完全不同的事物,它们彼此相邻”,这是一种非常混乱且容易出现错误的情况

(将两个lambda并排且形式参数名称相同并不违法,因为它们不会重叠。如果一个lambda位于另一个lambda中,则会产生类似的错误。)

此错误消息是出于好意,但遗憾的是,编译器在向用户解释问题方面做得很差。我做了一些工作来改进。。。也许是2011年?或者在附近。但这些改善充其量只是微不足道


正如您所发现的,正确的修复方法是停止使用相同的名称来表示同一范围内的两个完全不同的事物

首先,此错误消息已在较新版本的C#中删除;设计团队认为,它造成的混乱多于防止的错误

问题是,
Model
这个名称在这里用来表示两件事:任何属性或变量都用作
foreach
的集合,以及lambda的形式参数。此外,这两种用法重叠。也就是说,在
foreach
中使用的
Model
直接超出了
Model
作为
foreach
内部形式的使用范围。基本上,这里的编译器会说“您正在创建一种情况,在这种情况下,您可能会使用相同的名称来表示两个完全不同的事物,它们彼此相邻”,这是一种非常混乱且容易出现错误的情况

(将两个lambda并排且形式参数名称相同并不违法,因为它们不会重叠。如果一个lambda位于另一个lambda中,则会产生类似的错误。)

此错误消息是出于好意,但遗憾的是,编译器在向用户解释问题方面做得很差。我做了一些工作来改进。。。也许是2011年?或者在附近。但这些改善充其量只是微不足道


正如您所发现的,正确的修复方法是停止使用相同的名称来表示同一范围内的两个完全不同的事物

您不能在lambda中使用
模型
,错误消息清楚地说明了这一点<代码>模型已经存在,因此在lambda中使用
模型
时,实际上是在创建另一个同名变量。因此,只需使用
x
或其他任何尚未使用的工具即可。要进行测试,请查看输出,这是您想要的,对吗?可能重复您不能在lambda中使用
模型
,这样,错误消息就清楚了<代码>模型已经存在,因此在lambda中使用
模型
时,实际上是在创建另一个同名变量。因此,只需使用
x
或其他任何尚未使用的工具即可。要进行测试,请查看输出,它是您想要的,对吗?可能是