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

.NET 7调用存储过程出现ViewDataDictionary类型不匹配问题求助

解决方法

错误核心是你传递给视图的是用户列表(List<UserEntity>),但视图期望接收单个用户实体(UserEntity),以下是具体修正步骤:

1. 修改数据查询逻辑

你的代码用ToListAsync()会把存储过程返回的结果包装成列表,替换成获取单个实体的方法即可:

  • 用SingleOrDefaultAsync():适合确定存储过程只会返回0条或1条记录的场景,如果返回多条会抛出异常
  • 用FirstOrDefaultAsync():如果存储过程可能返回多条但你只取第一条,或者允许用户不存在(返回null)的场景

修改后的代码:

public async Task<IActionResult> GetDetails(int userId)
{
    var userIdParameter = new SqlParameter("@UserId", userId);
    var query = "exec GetSingleUserRecord @UserId";
    var getSingleData = await _db.Users
        .FromSqlRaw(query, userIdParameter)
        .SingleOrDefaultAsync(); // 按需替换为FirstOrDefaultAsync()

    return View(getSingleData);
}

2. 确认视图模型声明

检查你的视图文件顶部的模型声明,确保是单个实体类型:

@model Customer_Statements.Models.UserEntity

如果之前写的是@model IEnumerable<Customer_Statements.Models.UserEntity>或者List<...>,需要改成单个实体的声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:43:09