在Razor View中访问SQL DB - >无法将字符串转换为Generic.List

问题描述 投票:1回答:1

我试图显示从SQL数据库检索到的Lecturer属性,并存储在我的Razor视图的List上,但是当它到达该行时:

foreach (var lec in (List<LecturerModel>)ViewData["lecturers"])

我收到错误:

System.InvalidCastException:'无法将类型为'System.String'的对象强制转换为'System.Collections.Generic.List`1 [ADO.Models.LecturerModel]''。

DATA

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);

}

CONTROLLER

        List<LecturerModel> Lecturers = LecturerData.GetLecturers();

        ViewData["Lecturers"] = "lecturers";


        return View();
    }

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>
c# asp.net razor model-view-controller html-helper
1个回答
2
投票

以下代码将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"])
© www.soinside.com 2019 - 2024. All rights reserved.