0

I am trying to pass a list of values to another method however once that 2nd method is called the list loses it's value.

First Method:

public ActionResult Create_Filter([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<CourseFilterViewModel> courseFilterVM)
    {
var results = new List<Results>
        {
            new Results {CourseNumber = "100", CourseTitle = "Test Title", CourseSubject = "Subject Test"}
        };

        return RedirectToAction("TestView", "Filter", new {results});

}

2nd Method:

public ActionResult TestView(List<Results> results)
    {
        //results value here is 0               

        return null;
    }

I expect the output of: CourseNumber = "100", CourseTitle = "Test Title", CourseSubject = "Subject Test")

Zam
  • 2,784
  • 1
  • 17
  • 33
smuldr
  • 297
  • 1
  • 12

2 Answers2

1

when you're doing the redirect to action, the parameter is passed as a querystring so you can't pass an entire object, see this issue: passing object in redirecttoaction

Myke Black
  • 1,259
  • 15
  • 15
0

Try TempData. The data will carry over to one redirect.

public ActionResult Create_Filter([DataSourceRequest] DataSourceRequest request, 
[Bind(Prefix = "models")]IEnumerable<CourseFilterViewModel> courseFilterVM)
{
    var results = new List<Results>
    {
        new Results {CourseNumber = "100", CourseTitle = "Test Title", 
         CourseSubject = "Subject Test"}
    };
    TempData["results"] = results;
    return RedirectToAction("TestView", "Filter");

 }
 public ActionResult TestView()
 {

    if(TempData["results"] != null) {
      //do something
    }
    return whatever;
 }
Charles Owen
  • 1,975
  • 1
  • 12
  • 21