The
records from the
Database table will be read using
SqlDataReader and then copied into the
Generic List collection of class objects, which is later used for populating
HTML Table in
ASP.Net Core (.Net Core 8)
Razor Pages.
Database
I have made use of the following table Customers with the schema as follows.
I have already inserted few records in the table.
Note: You can download the database table SQL by clicking the download link below.
Namespaces
You will need to import the following namespace.
using System.Data.SqlClient;
Model
The Model class consists of following properties.
public class CustomerModel
{
public int CustomerId { get; set; }
public string Name { get; set; }
public string Country { get; set; }
}
Page Model (Code-Behind)
Inside the PageModel class, a property of type Generic List collection is defined.
The PageModel consists of following Handler method.
Handler method for handling GET operation
Inside this Handler method, the records are fetched from the
Customers Table using
SqlDataReader and then using
WHILE Loop, the records are copied into the Generic List collection of
Customers public property.
Finally, Generic List collection of Customers property is returned to the Razor Page.
public class IndexModel : PageModel
{
public List<CustomerModel> Customers { get; set; }
public void OnGet()
{
string constr = @"Data Source=.\SQL2019;Initial Catalog=Customers;uid=sa;pwd=pass@123";
using (SqlConnection con = new SqlConnection(constr))
{
string query = "SELECT CustomerId, Name, Country FROM Customers";
using (SqlCommand cmd = new SqlCommand(query, con))
{
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
Customers = new List<CustomerModel>();
while (sdr.Read())
{
Customers.Add(new CustomerModel
{
CustomerId = int.Parse(sdr["CustomerId"].ToString()),
Name = sdr["Name"].ToString(),
Country = sdr["Country"].ToString()
});
}
}
con.Close();
}
}
}
}
Razor Page (HTML)
HTML Markup
Inside the Razor Page, an
HTML Table is used for displaying the records.
The public property of Generic List object of the CustomerModel class is accessed through PageModel inside the Razor Page.
Then, a loop will be executed over the Model which will generate the
HTML Table rows with the
Customer records.
@page
@model SqlDataReader_Razor_Core.IndexModel
@using SqlDataReader_Razor_Core.Models;
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<table cellpadding="0" cellspacing="0">
<tr>
<th>CustomerId</th>
<th>Name</th>
<th>Country</th>
</tr>
@foreach (CustomerModel customer in Model.Customers)
{
<tr>
<td>@customer.CustomerId</td>
<td>@customer.Name</td>
<td>@customer.Country</td>
</tr>
}
</table>
</body>
</html>
Screenshot
Downloads