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
相关产品推荐
相关产品推荐

