Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
Problemas al pasar un parámetro a una acción

Estoy tratando de pasar datos a una acción dentro del mismo controlador. Estoy usando RedirectToAction , pero no tengo éxito. Se llama a la acción pero los datos que estoy tratando de pasarle tienen sus valores null .

Mi modelo:

 public class PlaylistModel { public Guid PlayListID { get; set; } [Display(Name = "Nome da Playlist")] public string NomePlayList { get; set; } [Display(Name = "Descrição")] public string Descricao { get; set; } [Display(Name = "Código")] public string CodigoPlayList { get; set; } public string Estado { get; set; } public string EmailUser { get; set; } public List<VideoThumbnails> VideosIdsYoutube { get; set; } [Display(Name = "Categorias")] public List<string> Categorias { get; set; } }

Esta acción recibe los datos, realiza el procesamiento y llama a la otra acción.

 [HttpPost] public ActionResult CreatePlaylist(string Categorias, string NomePlayList) { PlaylistModel playListModel = new PlaylistModel(); playListModel.VideosIdsYoutube = AppCache.Instance.VideoParaAPI.VideoThumbnails.ToList(); playListModel.Categorias = Categorias.Split(',').ToList(); playListModel.NomePlayList = NomePlayList; playListModel.Estado = EnumEstadoDaPlayList.Nova.ToString(); playListModel.EmailUser = AppUser.User.Email; var api = new AccessAPI.Playlist.AccessAPIPlaylist(); var playlist = api.CriarNova(playListModel); if(playlist != null) { return RedirectToAction("ExibirPlaylist", new RouteValueDictionary(new { controller = "Playlist", action = "ExibirPlaylist", pPlayList = playlist })); } else { return Problem("Não foi possível criar a playlist!"); } }

Esta otra acción es llamada por la anterior, pero el modelo llega con valores null

 [HttpGet] public ActionResult ExibirPlaylist(PlaylistModel pPlayList) { var apiVideo = new AccessAPI.Video.AccessAPIVideo(); var videos = apiVideo.ConsultarPorPlayListId(pPlayList.PlayListID).ToList(); if(videos.Count > 0) { videos.ForEach(v => { pPlayList.VideosIdsYoutube.Add(new Dommain.Cache.VideoThumbnails() { CanalID = v.CanalID, DataDePublicacao = v.DataDePublicacao, NomeDoCanal = v.NomeDoCanal, NomeDoVideo = v.NomeDoVideo, Thumbnail = v.Thumbnail, VideoId = v.VideoIdYoutube}); }); } return View(); }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

RouteValueDictionary en RedirectToAction() pasa solo tipos simples, como string , int , etc. RedirectToAction() no serializa los tipos de datos complejos. Por lo tanto, puede ser la forma más fácil de usar TempData .

En CreatePlaylist(string Categorias, string NomePlayList) :

 TempData["playListModel"] = playlist; return RedirectToAction("ExibirPlaylist");

Y entonces:

 [HttpGet] public ActionResult ExibirPlaylist() { if (TempData["playListModel"] is PlaylistModel pPlayList) { // Your code using `pPlayList` } return View("Index"); }

El MVC usa la serialización binaria, por defecto. Y en algunos casos, la serialización binaria puede fallar: el almacenamiento de objetos (cosas que no son cadenas) en TempDataDictionary no funciona correctamente . Por lo tanto, es preferible serializar el objeto especificado en una cadena JSON mediante JsonConvert.SerializeObject() .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda