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

ASP.NET MVC 5视图中遍历存储过程返回的查询结果报错如何解决

问题原因

你遇到的报错本质是属性调用的对象类型不匹配:

  • 你视图声明的Model是List<sp_caw_pocs_Result>集合类型,FirstName是集合内单个sp_caw_pocs_Result实例的属性,不是集合本身的属性,直接调用Model.FirstName就会触发该报错。
  • 额外注意报错信息里出现的FirstNName拼写,检查是否存在属性名手误多打了字母N的情况。

修复方案

你当前的Model类型声明本身是正确的,只需要按集合遍历的写法调用属性即可:

@model List<PWBMS.DAL.sp_caw_pocs_Result>

@* 遍历集合内的每一个元素再访问属性 *@
@foreach (var pocItem in Model)
{
    <div>
        <span>姓名:@pocItem.FirstName</span>
        <!-- 其他属性渲染逻辑 -->
    </div>
}

如果仍有IDE波浪线提示,可在视图顶部补充命名空间引用简化声明,避免命名空间拼写错误:

@using PWBMS.DAL
@model List<sp_caw_pocs_Result>

更灵活的存储过程调用方案

如果你不想依赖EF自动生成的sp_caw_pocs_Result类(避免EF模型刷新时自动生成类被覆盖影响视图),可以自定义DTO类做中间层:

  1. 定义DTO类和存储过程返回字段对应
public class CawPocDto
{
    public string FirstName { get; set; }
    // 补充其他需要用到的字段
}
  1. 控制器中转换查询结果为DTO列表
var resultList = db.sp_caw_pocs(id)
    .Select(r => new CawPocDto
    {
        FirstName = r.FirstName,
        // 其他字段赋值
    })
    .ToList();
return PartialView("_CAWPocs", resultList);
  1. 视图修改Model声明为自定义DTO类型即可
@model List<CawPocDto>

这种方式解耦了EF自动生成类和视图的依赖,后续可维护性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 22:21:00