I have a search box that searches by using EMPLID. Search works but if I go to any other page after doing search (Ex: If I switch to details page) and then navigate back to the page I did search on, It displays all the records. How can I keep the search criteria so that when I navigate between pages it shows information of that EMPLID?
My controller:
public ActionResult Index(string SearchString)
{
var emp = from e in db.EMPLOYMENTs
select e;
if (!String.IsNullOrEmpty(SearchString))
{
emp = emp.Where(s => s.EMPLID.Contains(SearchString));
}
return View(emp);
}
My Layout:
@using (Html.BeginForm())
{
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input class="form-control" placeholder="Search" type="text" name="SearchString">
</div>
</form>
}
You can use
TempData
for preserving the search string.Add your SearchString in temp data like this-
...and get back the value when required-
Please refer this msdn article for more information on passing Data in an ASP.NET MVC Application
You have two options: to use TempData or to use Session State.
Follow the examples:
http://www.dotnetcurry.com/aspnet-mvc/1074/aspnet-mvc-pass-values-temp-data-session-request
http://www.codeproject.com/Articles/818493/MVC-Tempdata-Peek-and-Keep-confusion
TempData keep() vs peek()
How to keep search value after delete in MVC