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

ASP.NET MVC视图模型类型不匹配问题求助

问题原因

你在控制器的Index方法里犯了一个关键错误:传递给View的是方法本身(MateriaCursadas),而非执行方法后得到的集合结果。

MateriaCursadas是返回List<Materias>的方法,直接传递方法引用时,它的类型是Func<List<Materias>>,但你的视图明确要求IEnumerable<Materias>类型的模型,这就导致了类型不匹配的异常。

修正方案

有两种正确传递模型的方式:

方式一:使用已查询好的集合变量

你已经通过LINQ得到了排序后的Materias集合,直接将这个变量传给View即可:

public ActionResult Index()
{
    var Materias = from a in MateriaCursadas()
                   orderby a.CodigoM
                   select a;
    return View(Materias); // 传递查询完成的Materias变量,而非MateriaCursadas方法
}

方式二:直接执行方法获取结果

如果不需要额外排序逻辑,也可以直接执行MateriaCursadas()方法得到集合后传递:

public ActionResult Index()
{
    return View(MateriaCursadas()); // 加上()执行方法,得到List<Materias>实例
}

额外修复:完善视图HTML结构

你的视图代码中foreach循环和HTML标签未闭合,补充后避免前端渲染问题:

@foreach (var item in Model) {
    <tr>
        <td>@Html.DisplayFor(modelItem => item.CodigoM)</td>
        <td>@Html.DisplayFor(modelItem => item.Nombre)</td>
        <td>@Html.DisplayFor(modelItem => item.Creditos)</td>  
    </tr>
} <!-- 闭合foreach循环 -->
</tbody>
</table> <!-- 闭合表格标签 -->
</body>
</html> <!-- 闭合html标签 -->

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:40:28