c# - 在 Razor 视图中访问 SQL DB -> 无法将字符串转换为 Generic.List
问题描述
我正在尝试显示从 SQL 数据库检索并存储在我的 Razor 视图的列表中的 Lecturer 属性,但是当它到达该行时:
foreach (var lec in (List<LecturerModel>)ViewData["lecturers"])
我得到错误:
System.InvalidCastException:'无法将'System.String'类型的对象转换为'System.Collections.Generic.List`1 [ADO.Models.LecturerModel]'。
数据
List<LecturerModel> Lecturers = new List<LecturerModel>();
string query = "SELECT * FROM Lecturer";
SqlCommand cmd = new SqlCommand(query, connection);
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
LecturerModel lecturer = new LecturerModel()
{
LecturerId = (int)rd["Id"],
FirstName = (string)rd["FirstName"],
LastName = (string)rd["LastName"],
PracticeId = (int)rd["PracticeId"],
SessionId = null
};
Lecturers.Add(lecturer);
}
控制器
List<LecturerModel> Lecturers = LecturerData.GetLecturers();
ViewData["Lecturers"] = "lecturers";
return View();
}
看法
@model ADO.Models.LecturerModel
@using (Html.BeginForm("Login", "Home", FormMethod.Post))
{
<table>
@{
foreach (var lec in (List<LecturerModel>)ViewData["lecturers"])
{
<tr>
<td>@lec.FirstName</td>
<td>@lec.LastName</td>
<td>@lec.Username</td>
</tr>
}
}
</table>
解决方案
以下代码设置ViewData["Lecturers"]
为字符串文字“讲师”:
List<LecturerModel> Lecturers = LecturerData.GetLecturers();
ViewData["Lecturers"] = "lecturers";
也许您想将其分配List<LecturerModel>
给它?:
List<LecturerModel> Lecturers = LecturerData.GetLecturers();
ViewData["Lecturers"] = Lecturers;
这应该可以(List<LecturerModel>)ViewData["lecturers"]
工作。
@Rahul刚刚在评论中提到存在大小写差异:
在上面的代码中,您为 分配了一个值ViewData["Lecturers"]
,但随后您尝试从中读取ViewData["lecturers"]
(注意第一个 L)。这些必须相同。您应该将另一段代码更改为大写L
以匹配:
foreach (var lec in (List<LecturerModel>)ViewData["Lecturers"])
推荐阅读
- c# - 以编程方式禁用 Windows 通知?
- ruby-on-rails-5 - AWS EBS - Rails5 / nginx - robots.txt 未找到错误 (404)
- python - 点击 python Cli.testing TypeError
- haskell - 无法将类型“a”与“a1”匹配
- laravel - Laravel Eloquent - 无法查询与所有权的关系
- html - 带有三角形形状的 HTML5 正文背景 CSS
- python - 尝试使用 Opencv 和 Flask 显示多个流
- gnuplot - gnuplot 安装失败 - 目标“qtgnuplot_fr.qm”的配方失败
- javascript - 我怎样才能得到这个代码来计算金额列
- r - 修改 .RData 文件中的表