0

I am working on MVC project where I have successfully created a search page with several dropdowns and textboxes. After the user queries the data, they are then transferred to a List page with a list of results corresponding to our search. I was wondering if it is possible to create a button located on the List view that returns them back to the search page, the search page's textboxes/dropdowns still populated with their previous search. Currently, when they return, their previous search was cleared, and they can't see what was queried.

Simplified: Is there a way to capture the data of a viewmodel on query submit, and then be able to access it with simple return button.

Get Method (populates dropdown etc)

[HttpGet]
public ActionResult Index()
{
    //testTypes
    var testTypesL = new List<string>();
    var testTypesQr = from z in db.Results
                      orderby z.TestType
                      select z.TestType;
    testTypesL.AddRange(testTypesQr.Distinct());

    //technicians
    var techniciansL = new List<string>();
    var techniciansQr = from z in db.Results
                        orderby z.Technician
                        select z.Technician;
    techniciansL.AddRange(techniciansQr.Distinct());

    //engineers
    var engineersL = new List<string>();
    var engineerQr = from z in db.Results
                     orderby z.Engineer
                     select z.Engineer;
    engineersL.AddRange(engineerQr.Distinct());

    //testStalls
    var testStallL = new List<string>();
    var testStallQr = from z in db.Results
                      orderby z.TestStall
                      select z.TestStall;
    testStallL.AddRange(testStallQr.Distinct());

    //unit models
    var unitModelL = new List<string>();
    var unitModelQr = from z in db.Results
                      orderby z.UnitID
                      select z.UnitID;
    unitModelL.AddRange(unitModelQr.Distinct());

    TestDataViewModel obj = new TestDataViewModel();
    obj.EngineerList = new SelectList(engineersL);
    obj.TechnicianList = new SelectList(techniciansL);
    obj.TestStallList = new SelectList(testStallL);
    obj.UnitModelList = new SelectList(unitModelL);
    obj.TestTypeList = new SelectList(testTypesL);

    return View("Index", obj);
}

Post Method: (sends user query to the List view)

[HttpPost]
public ActionResult Index(TestDataViewModel obj)
{
    var data = from d in db.Results                 
               select d;
    //search data parameters

    if (!String.IsNullOrEmpty(obj.StartDate.ToString()) && !String.IsNullOrEmpty (obj.EndDate.ToString()))
    {
        data = data.Where(z => obj.StartDate <= z.EndDate && obj.EndDate >= z.EndDate);            
    }

    if (!String.IsNullOrEmpty(obj.TestNumber.ToString()))
    {
        data = data.Where(z => z.TestNumber == obj.TestNumber);              
    }

    if (!String.IsNullOrEmpty(obj.unitModel))
    {
        data = data.Where(z => z.UnitID == obj.unitModel);
    }

    if (!String.IsNullOrEmpty(obj.Project))
    {
        data = data.Where(z => z.ProjectNum.Contains(obj.Project));           
    }

    if (!String.IsNullOrEmpty(obj.testType))
    {
        data = data.Where(z => z.TestType == obj.testType);              
    }
    if (!String.IsNullOrEmpty(obj.engineer))
    {
        data = data.Where(z => z.Engineer == obj.engineer);              
    }
    if (!String.IsNullOrEmpty(obj.technician))
    {
        data = data.Where(z => z.Technician == obj.technician);               
    }
    if (!String.IsNullOrEmpty(obj.testStall))
    {
        data = data.Where(z => z.TestStall == obj.testStall);              
    }

    return View("List", data);
}
ekad
  • 14,436
  • 26
  • 44
  • 46
Eli
  • 533
  • 1
  • 5
  • 24
  • Have you considered storing the data in the Session? http://stackoverflow.com/questions/14138872/how-to-use-sessions-in-an-asp-net-mvc-4-application – Kye Nov 18 '14 at 05:21
  • I have heard a small amount in relation to that. That is more of a user driven approach correct? I currently have a sign in system using Windows login, but definitely need to update that aspect of the website. – Eli Nov 18 '14 at 19:17
  • You should use the session for this "*...that is more of a user driven approach...*" - yes, which makes it all the more appropriate as each users search options will be different. – James Jun 11 '15 at 08:41

0 Answers0