When beginners start working with ASP.NET Core MVC, a common question is how to display large amounts of data efficiently. Developers coming from WebForms often search for controls like GridView, Repeater, or UpdatePanel. However, ASP.NET Core MVC follows a modern and performance-focused approach and does not support these controls.
This article explains the correct and accepted ways to display lakhs of records in ASP.NET Core MVC, starting from simple concepts and gradually moving toward advanced, production-level implementations.
Understanding the Core MVC Data Binding Concept
In Core MVC, data is not bound to server controls. Instead, the controller sends data to the view, and the view renders it using HTML and Razor syntax.
The key rule is:
Never load all records at once. Always fetch only the data that the user needs.
This rule applies to all real-time applications such as IPO systems, banking portals, and admin dashboards.
Example Scenario
Assume we have an IPOmaster table with lakhs of records and the following fields:
Symbol
Category
CreatedDate
Our goal is to display this data efficiently in a Core MVC application.
1. HTML Table with Razor – The First Step (Beginner Level)
This is the simplest and most important method to understand.
It replaces GridView and Repeater from WebForms.
The controller fetches only a small number of records using pagination.
Controller example:
public IActionResult IPOmaster(int page = 1)
{
int pageSize = 20;
var data = _context.IPOmaster
.AsNoTracking()
.OrderByDescending(x => x.CreatedDate)
.Skip((page - 1) * pageSize)
.Take(pageSize)
.ToList();
return View(data);
}
Why this is important:
AsNoTracking()improves performanceSkipandTakeensure only required rows are fetchedMemory usage stays low
View example:
<table class="table table-bordered">
<thead>
<tr>
<th>Symbol</th>
<th>Category</th>
<th>Date</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.Symbol</td>
<td>@item.Category</td>
<td>@item.CreatedDate</td>
</tr>
}
</tbody>
</table>
This approach is mandatory knowledge for every MVC developer.
2. Partial View with AJAX – Beginner-Friendly Replacement for UpdatePanel
Beginners often ask how to update only part of the page without refreshing everything.
In Core MVC, this is done using Partial Views with AJAX.
Partial View (_IPOmasterList.cshtml):
<table class="table table-striped">
@foreach (var item in Model)
{
<tr>
<td>@item.Symbol</td>
<td>@item.Category</td>
<td>@item.CreatedDate</td>
</tr>
}
</table>

Join the conversation! Your thoughts help the community grow.