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,880
  • 1
  • 18
  • 33
smuldr
  • 315
  • 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,299
  • 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
  • 2,403
  • 1
  • 14
  • 25