如何在asp.net mvc视图中显示数据库记录

don*_*ona 14 c# asp.net-mvc sqldatareader sqlclient

使用ASP.NET MVC和C#,如何将一些数据库记录传递给View并以表格形式显示它们?

我需要知道如何从已返回到SqlDataReader对象的数据库传输/传递一些记录行,并将该对象传递给View,这样我就可以使用foreach显示View中对象所包含的所有记录.

以下代码是我正在尝试做的事情.但它不起作用.

控制者:

public ActionResult Students()
{
    String connectionString = "<THE CONNECTION STRING HERE>";
    String sql = "SELECT * FROM students";
    SqlCommand cmd = new SqlCommand(sql, connectionString);

    using(SqlConnection connectionString = new SqlConnection(connectionString))
    {
        connectionString.Open();
        SqlDataReader rdr = cmd.ExecuteReader();
    }

    ViewData.Add("students", rdr);

    return View();
}
Run Code Online (Sandbox Code Playgroud)

风景:

<h1>Student</h1>

<table>
    <!-- How do I display the records here? -->
</table>
Run Code Online (Sandbox Code Playgroud)

Gia*_*los 46

1.首先创建一个Model将保存记录值的.例如:

public class Student
{
    public string FirstName {get;set;}
    public string LastName {get;set;}
    public string Class {get;set;}
    ....
}
Run Code Online (Sandbox Code Playgroud)

2.然后将阅读器中的行加载到列表或其他内容:

public ActionResult Students()
{
    String connectionString = "<THE CONNECTION STRING HERE>";
    String sql = "SELECT * FROM students";
    SqlCommand cmd = new SqlCommand(sql, conn);

    var model = new List<Student>();
    using(SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        SqlDataReader rdr = cmd.ExecuteReader();
        while(rdr.Read())
        {
            var student = new Student();
            student.FirstName = rdr["FirstName"];
            student.LastName = rdr["LastName"];
            student.Class = rdr["Class"];
            ....

            model.Add(student);
        }

    }

    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

3.最后在你的View,声明你的模型的种类:

@model List<Student>

<h1>Student</h1>

<table>
    <tr>
        <th>First Name</th>
        <th>Last Name</th>
        <th>Class</th>
    </tr>
    @foreach(var student in Model)
    {
    <tr>
        <td>@student.FirstName</td>  
        <td>@student.LastName</td>  
        <td>@student.Class</td>  
    </tr>
    }
</table>
Run Code Online (Sandbox Code Playgroud)


nik*_*619 5

如果您不必使用 sql 阅读器,那么拥有这样的控制器会不会更容易。

控制器.cs

private ConnectContext db = new ConnectContext();

public ActionResult Index()
   {
     return View(db.Tv.ToList());
   }
Run Code Online (Sandbox Code Playgroud)

连接上下文.cs

public class ConnectContext : DbContext
{
    public DbSet<Student> Student{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这样您的连接字符串将在您的 web.config 中,并且视图 + 模型将保持不变。