How To Make Search Filter In Asp.net Core MVC C# (db First Approach EF-CORE) (Part-5)
Hello & As-salam u alikum ! , In this article we will learn to apply a search filter on the data which we had get from sql server table on asp.net core view page.
Note : For Beginner Guide Articles :
https://dotnetcorecommunity.blogspot.com/p/aspnet-core-tutorials-paracticals.html
Step# 1:
Note : For Beginner Guide Articles :
https://dotnetcorecommunity.blogspot.com/p/aspnet-core-tutorials-paracticals.html
Step# 1:
Watch previous article for displaying data on asp.net core view page from sql server table.
In last blog we had a Index Action method in Custom Controller which was like this .
-------------------------------------------------------------------------------------------------------
[HttpGet]
public async Task<IActionResult> Index(string sortOrder)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
var li = from s in db.TblUser
select s;
switch (sortOrder)
{
case "name_desc":
li = li.OrderByDescending(s => s.UUserName);
break;
case "Date":
li = li.OrderBy(s => s.UAddedDate);
break;
case "date_desc":
li = li.OrderByDescending(s => s.UAddedDate);
break;
default:
li = li.OrderBy(s => s.UUserName);
break;
}
return View(await li.AsNoTracking().ToListAsync());
}
-------------------------------------------------------------------------------------------------------
Now, I am going to add a new input parameter which will represent the searched keyword in action result. Below are the changes in code to apply Search Filter.
Step# 2:
Paste the below code in replace of last Index Action method.
Code Snippet:
--------------------------------------------------------------------------------------------------------
[HttpGet]
public async Task<IActionResult> Index(string sortOrder, string searchString)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
ViewData["CurrentFilter"] = searchString;
var li = from s in db.TblUser
select s;
if (!String.IsNullOrEmpty(searchString))
{
li = li.Where(s => s.UUserName.Contains(searchString)
|| s.UEmail.Contains(searchString));
}
switch (sortOrder)
{
case "name_desc":
li = li.OrderByDescending(s => s.UUserName);
break;
case "Date":
li = li.OrderBy(s => s.UAddedDate);
break;
case "date_desc":
li = li.OrderByDescending(s => s.UAddedDate);
break;
default:
li = li.OrderBy(s => s.UUserName);
break;
}
return View(await li.AsNoTracking().ToListAsync());
}
--------------------------------------------------------------------------------------------------------
Step# 3
Go to the Index.cshtml page & add the following Html to apply Search filter on view page.
Code Snippet:
--------------------------------------------------------------------------------------------------------
<form asp-action="Index" method="get">
<div class="form-actions no-color">
<p style="margin-top:20px">
<input type="text" name="SearchString" value="@ViewData["currentFilter"]" />
<input type="submit" value="Search" class="btn btn-outline-success btn-sm" /> |
<a asp-action="Index">Back to Full List</a>
</p>
</div>
</form>
--------------------------------------------------------------------------------------------------------
Conclusion : There you go to use search filter on your view page. Thank you for reading ,Have a good day ! In the next article we will learn to apply Pagination in asp.net core.
Previous Lesson Next Lesson
2 Comments:
Pics are still not showing :(
send me the snapshot
Post a Comment
Do not Add Spam links in the Comment Box
Subscribe to Post Comments [Atom]
<< Home