In this article I will explain with an example, how to use a DataSet or DataTable as Model in Razor Page in ASP.Net Core Razor Pages.
Though it is not a good practice to use to use DataSet or DataTable as Model in Razor Page in Core architecture, thus user’s please make a note that this is just an informative article and does not recommend to use DataSet or DataTable as Model in ASP.Net Core Razor Pages.
Note: For beginners in ASP.Net Core Razor Pages, please refer my article ASP.Net Core Razor Pages: Hello World Tutorial with Sample Program example.
 
Database
I have made use of the following table Customers with the schema as follows. CustomerId is an Auto-Increment (Identity) column.
ASP.Net Core Razor Pages: Using DataSet (DataTable) as Model in Razor Page
 
I have already inserted few records in the table.
ASP.Net Core Razor Pages: Using DataSet (DataTable) as Model in Razor Page
 
Note: You can download the database table SQL by clicking the download link below.
          Download SQL file
 
 
Namespaces
You will need to import the following namespaces.
using System.Data;
using System.Data.SqlClient;
 
 
Razor PageModel (Code-Behind)
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 ADO.Net.
The records are inserted into a public property Customers (DataSet) using SqlDataAdapter class object.
Finally, the Customers is returned to the Razor Page.
public class IndexModel : PageModel
{
    public DataSet Customers { get; set; }
 
    public void OnGet()
    {
        string constr = @"Data Source=.\SQL2019;Initial Catalog=AjaxSamples;integrated security=true";
        using (SqlConnection con = new SqlConnection(constr))
        {
            string query = "SELECT * FROM Customers";
            using (SqlCommand cmd = new SqlCommand(query, con))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                {
                    Customers = new DataSet();
                    sda.Fill(Customers);
                }
            }
        }
    }
}
 
 
Razor Page (HTML)
Inside the Razor Page, the System.Data namespace is inherited.
For displaying the records, an HTML Table is used. A loop will be executed over the rows of the DataTable which will generate the HTML Table rows with the Customer records.
@page
@using System.Data;
@model DataSet_Razor_Core.Pages.IndexModel
 
@{
    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 (DataRow row in Model.Customers.Tables[0].Rows)
        {
            <tr>
                <td>@row["CustomerId"]</td>
                <td>@row["Name"]</td>
                <td>@row["Country"]</td>
            </tr>
        }
    </table>
</body>
</html>
 
 
Screenshot
ASP.Net Core Razor Pages: Using DataSet (DataTable) as Model in Razor Page
 
 
Downloads