Search code examples
c#asp.net-mvccastingtempdata

Casting collection of objects from TempData (MVC C#)


I am trying to put my collection of objects into TempData like this:

  [HttpPost]
  public ActionResult PandoraRemovalTotal2(List<Business.Models.Administration.CorrespondenceRecordViewModel> model, string hdnMem)
    {
        Business.Administration.Pandora Pandora = new Business.Administration.Pandora();
        model = Pandora.DeleteDocs(model);
        TempData["model"] = model.Where(m => m.DeleteRow == true);
        return RedirectToAction("PandoraDocsDeleted", new {memNum = hdnMem });
    }

And pass it through redirect to action

[HttpGet]
public ActionResult PandoraDocsDeleted(string memNum)
{
    var model = (List<Business.Models.Administration.CorrespondenceRecordViewModel>)TempData["model"];
    ViewBag.MemNum = memNum;
    return View(model);
 }

But when I do this:

var model = (List<Business.Models.Administration.CorrespondenceRecordViewModel>)TempData["model"];

it is null. How do I cast this?


Solution

  • Instead of

    TempData["model"] = model.Where(m => m.DeleteRow == true);
    

    Use

    TempData["model"] = model.Where(m => m.DeleteRow == true).ToList();
    

    Otherwise you are storing a definition for an IEnumerable<>, without any data.