É um objeto dinâmico, o que significa que você pode adicionar propriedades a ele no controlador e lê-las posteriormente na visualização, porque você está essencialmente criando o objeto enquanto o faz, um recurso do tipo dinâmico. Consulte este artigo do MSDN sobre dinâmica. Veja este artigo sobre seu uso em relação ao MVC.
Se você quiser usar isso para formulários da web, adicione uma propriedade dinâmica a uma classe de página base como:
public class BasePage : Page
{
public dynamic ViewBagProperty
{
get;
set;
}
}
Faça com que todas as suas páginas sejam herdadas disso. Você deve ser capaz de, em sua marcação ASP.NET, fazer:
<%= ViewBagProperty.X %>
Isso deve funcionar. Se não, existem maneiras de contornar isso.