Use TempData ASP MVC

0

From what I've been looking for ( here ), I can save a list of data in a TempData created in a function, to use in another function in my Controller.

Now, I'm trying to do this, but I can not do it:

Model:

...
namespace ARTSOFT.dal.ViewModels
{
    public class Localidades
    {
        public string Familia { get; set; }
        public string Subfamilia { get; set; }
        public string Registo { get; set; }
        public string Descricao { get; set; }
    }

    public class LocalidadesFormViewModel
    {
        public Localidades Localidades { get; private set; }

        public LocalidadesFormViewModel(Localidades localidades)
        {
            Localidades = localidades;
        }
    }
}

Function where I create the TempData:

public ActionResult AtribuirOrdemServ()
{
    ...
    var newListaLocalidades = new List<ARTSOFT.dal.ViewModels.Localidades>();
    foreach (var item in localidades)
    {
       var newItemLocalidade = new ARTSOFT.dal.ViewModels.Localidades();
       newItemLocalidade.Familia = item.ToString().Split(',')[0].Split('{')[1].Split('=')[1].Split(' ')[1];
       newItemLocalidade.Subfamilia = item.ToString().Split(',')[1].Split('=')[1].Split(' ')[1];
       newItemLocalidade.Registo = item.ToString().Split(',')[2].Split('=')[1].Split(' ')[1];
       newItemLocalidade.Descricao = item.ToString().Split(',')[3].Split('}')[0].Split('=')[1].Split('"')[0];
       newListaLocalidades.Add(newItemLocalidade);
   }

   TempData["ListaLocalidades"] = newListaLocalidades.ToList();

   return View("IndexAtribuirOrdemServ");
}

Then I'm trying to access another function via JavaScript, and I wanted to fetch this TempData:

$("#divResultFiltroAtribuirOrdemServ").load("FiltroAtribuirOrdemServ"
, function () {
...
});

And the FiltroAtribuirOrdemServ function:

public ActionResult FiltroAtribuirOrdemServ(){
    ...
    var teste = (Localidades)TempData["ListaLocalidades"];
}

Where do I get the TempData["ListaLocalidades"] always null

    
asked by anonymous 30.12.2014 / 17:48

1 answer

0

You are casting for a Locales object, but you should actually cast a List of Locations:

(List<Localidades>)TempData["ListaLocalidades"];

Instead of using the View method, use RedirectToAction , so it will go through the ActionResult you created and want to work with the data.

return RedirectToAction("IndexAtribuirOrdemServ");

The way you've made it goes straight to View without entering ActionResult, you can also work with the data in View:

@foreach (var item in (List<ARTSOFT.dal.ViewModels.Localidades>)TempData["ListaLocalidades"])
{
    @Html.Raw(item.Descricao)
}
    
30.12.2014 / 17:53