Как отобразить записи базы данных в asp.net представление mvc
использование ASP.NET MVC с C#, как передать некоторые записи базы данных в представление и отобразить их в виде таблицы?
мне нужно знать, как я могу передать / передать некоторые строки записей из базы данных, которые были возвращены объекту SqlDataReader и передать этот объект в представление, чтобы я мог отобразить все записи, содержащиеся в объекте в представлении, используя foreach.
следующий код-это то, что я пытаюсь сделать. Но это не работает.
в Контроллер:
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();
}
Вид:
<h1>Student</h1>
<table>
<!-- How do I display the records here? -->
</table>
2 ответов
1. Сначала создайте Model
, который будет содержать значения записи. например:
public class Student
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string Class {get;set;}
....
}
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);
}
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>
Если вам не нужно использовать SQL reader, было бы не проще иметь такой контроллер.
контроллер.cs
private ConnectContext db = new ConnectContext();
public ActionResult Index()
{
return View(db.Tv.ToList());
}
ConnectContext.cs
public class ConnectContext : DbContext
{
public DbSet<Student> Student{ get; set; }
}
таким образом, ваша строка подключения будет в вашей сети.конфигурация и модель View + останутся прежними.