Diferencias entre ViewBag y ViewData - .NET MVC RAZOR

Cuando nos iniciamos en .NET MVC , surge la primera duda... Pasar datos desde el controlador a la vista.

Para ello debemos conocer ViewData y ViewBag, que son "sacos" para pasar información entre el controlador y la vista.

Ahora veamos un ejemplo para el controlador "Index":

public ActionResult Index()
        {
            ViewBag.Mensaje= "Mi primer mensaje en MVC";
            ViewData["Mensaje"] = "Mi primer mensaje en MVC";


            return View();
        }

Ahora, tenemos dos opciones para pasar el mismo valor. Que utilizamos? ViewBag ó ViewData?

Aunque ambas tienen la misma funcionalidad, suelo utilizar el ViewBag por dos razones:

  1. El código queda más limpio y es más rápido de escribir, evitando corchetes [].
  2. El ViewData es de tipo Object y hay que hacer cast en la vista para utilizarlo, mientras que el ViewBag se genera dinámicamente con el tipo de dato asignado.
Ahora, para completar el ejemplo veamos la vista:

<p>@ViewBag.Mensaje</p>
<p>@ViewData["Mensaje"]</p>