You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用自定义DLL时,.cshtml遍历Employee_Model报枚举器错误求助

解决foreach遍历单个Employee对象的错误

嘿,这个错误其实很好理解——你现在的代码里存在模型类型不匹配的问题,我给你拆解清楚并给出解决方案:

问题根源拆解

  • 你的Controller方法 GetEmpById 里,ObjEmpRepo.GetEmployeesById(Id) 返回的是单个Employee_Model对象(从方法名虽带"s",但根据Id查询的逻辑应该是返回单个员工),所以传给View的是一个单独的员工实例。
  • 但你的View里却想用foreach去遍历这个单个对象,而foreach只能作用于可枚举集合(比如List<Employee_Model>、IEnumerable<Employee_Model>这类),单个Employee_Model没有实现枚举器,自然会抛出这个错误。

分场景给出解决方案

场景1:你确实要显示单个员工的详情(最符合方法名的合理场景)

直接修改View,去掉foreach,直接访问模型的属性即可:

@model Business_Dll.Model.Employee_Model

<h3>员工详情</h3>
<div class="emp-details">
    <p>员工ID:@Model.Id</p>
    <p>姓名:@Model.Name</p>
    <p>部门:@Model.Department</p>
    <!-- 替换成你实际需要展示的员工属性 -->
</div>

场景2:你实际想返回多个员工(比如Repo方法逻辑有误,或需要查询符合某条件的一批员工)

需要同时调整Controller和View:

  1. 先修改Controller,确保返回的是集合类型:
public ActionResult GetEmpById(int Id) {
    // 如果Repo方法确实返回单个,就把它包装成集合;如果Repo有返回集合的方法,直接调用即可
    var empList = new List<Business_Dll.Model.Employee_Model> 
    { 
        ObjEmpRepo.GetEmployeesById(Id) 
    };
    return View(empList);
}
  1. 然后更新View的模型类型为可枚举集合:
@model IEnumerable<Business_Dll.Model.Employee_Model>

@foreach (var empDetail in Model) {
    <div class="emp-item">
        <p>ID:@empDetail.Id</p>
        <p>姓名:@empDetail.Name</p>
    </div>
}

额外小建议

可以把Repo的方法名改成GetEmployeeById(去掉末尾的"s"),这样语义更准确,能避免后续自己混淆返回值类型~

内容的提问来源于stack exchange,提问作者user8518202

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:57:39