ASP.Net MVC - Template engine

Nesta aula iremos aprender como fazer templates dinâmicos, tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados.

assinaturaAssine nossa Comunidade

Asp Net MVC - Template Engine

Nesta aula mostraremos como fazer iteração de código em um template,tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados ou seja, você que conhece um pouco de HTML, quer você mesmo editar as funções que vão ter no seu sistema ou no seu website.

Para isso vamos utilizar o componente chamado NVelocity.

Esse componente faz com que você que está construindo sua solução, flexibilize seu texto em HTML, para colocar tags dinâmicas e assim ficar mais iterativo.

Para instalar o NVelocity:

  • Menu -> Ferramentas;
  • Gerenciador de Pacotes do NuGet;
  • Gerenciar Pacotes do NuGet para a Solução;
  • No campo de pesquisa, buscar por: NVelocity;
  • Clicar no objeto na lista da pesquisa e instalar em no projeto.

Na class PaginasController, faremos o using do NVelocity

Criaremos uma nova rota chamada paginas_preview_dinamico

      
        routes.MapRoute(
          "paginas_preview_dinamico",
          "paginas/{id}/preview_dinamico",
          new { controller = "Paginas", action = "PreviewDinamico", id = 0 }
        );
       
    

Vamos criar a ActionResult PreviewDinamico, inicializando o Velocity.Init()

      
        namespace MVC_GerenciadorDeConteudo.Controllers
        {
          public class PaginasController : Controller 

            public ActionResult PreviewDinamico(int id)
            {
              var pagina =  Pagina.BuscaPorId(id);
              Velocity.Init()

              var modelo = new  
              {
                Header = "Lista de dados dinamicos",
                Itens = new[] 
                {
                  new { ID = 1, Nome = "Texto 001, Negrito = false"},
                  new { ID = 2, Nome = "Texto 002, Negrito = true"},
                  new { ID = 3, Nome = "Texto 003, Negrito = false"}
                }
              };

              var velocityContext = new VelocityContext();
              velocityContext.Put("model", modelo);

              var html = new StringBuilder();
              bool result = Velocity.Evaluate(velocityContext, 
                                              new StringWriter(html), 
                                              "NomeParaCapturarLogError", 
                                              new StringReader(pagina.Conteudo));
              ViewBag.Html = html.ToString();
              return View();
            }
        }
       
    

Ao retornar a View(), será mostrado conteúdo através do arquivo PreviewDinamico.cshtml

      
        < div class=" content">@Html.Raw(ViewBag.Html) 
       
    

Abaixo segue parte do Html dinâmico que foi criado na variável conteúdo. Note que foi inserido um objeto chamado model.

Este objeto model foi criado na ActionResult PreviewDinamico, na variável modelo, inserindo no contexto, chamando como model.

      
        < h1>Danilo < /h1>  < span>Aparecido < /span> 
        
        < h1>Tabela: $model.Header < /h1>

        < table class = "table"> 
          < tr> 
            < td>Id < /td>
            < td>Nome < /td>
            < td>Negrito < /td>
          < /tr>

          #foreach ($item in $model.Itens) 
            < tr> 
              < td>$item.Id < /td>
              < td>$item.Nome < /td>
              < td> 
                #if ($item.Negrito)
                  < b>$item.Negrito  < /b>
                #else 
                  $item.Negrito 
                #end
              < /td>
            < /tr>
          #end
        < /table> 
       
    

ASP.Net MVC - Template engine

Nesta aula iremos aprender como fazer templates dinâmicos, tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Asp Net MVC - Template Engine

Nesta aula mostraremos como fazer iteração de código em um template,tendo a possibilidade de juntar lógica de programação a um tema cadastrado na base de dados ou seja, você que conhece um pouco de HTML, quer você mesmo editar as funções que vão ter no seu sistema ou no seu website.

Para isso vamos utilizar o componente chamado NVelocity.

Esse componente faz com que você que está construindo sua solução, flexibilize seu texto em HTML, para colocar tags dinâmicas e assim ficar mais iterativo.

Para instalar o NVelocity:

  • Menu -> Ferramentas;
  • Gerenciador de Pacotes do NuGet;
  • Gerenciar Pacotes do NuGet para a Solução;
  • No campo de pesquisa, buscar por: NVelocity;
  • Clicar no objeto na lista da pesquisa e instalar em no projeto.

Na class PaginasController, faremos o using do NVelocity

Criaremos uma nova rota chamada paginas_preview_dinamico

      
        routes.MapRoute(
          "paginas_preview_dinamico",
          "paginas/{id}/preview_dinamico",
          new { controller = "Paginas", action = "PreviewDinamico", id = 0 }
        );
       
    

Vamos criar a ActionResult PreviewDinamico, inicializando o Velocity.Init()

      
        namespace MVC_GerenciadorDeConteudo.Controllers
        {
          public class PaginasController : Controller 

            public ActionResult PreviewDinamico(int id)
            {
              var pagina =  Pagina.BuscaPorId(id);
              Velocity.Init()

              var modelo = new  
              {
                Header = "Lista de dados dinamicos",
                Itens = new[] 
                {
                  new { ID = 1, Nome = "Texto 001, Negrito = false"},
                  new { ID = 2, Nome = "Texto 002, Negrito = true"},
                  new { ID = 3, Nome = "Texto 003, Negrito = false"}
                }
              };

              var velocityContext = new VelocityContext();
              velocityContext.Put("model", modelo);

              var html = new StringBuilder();
              bool result = Velocity.Evaluate(velocityContext, 
                                              new StringWriter(html), 
                                              "NomeParaCapturarLogError", 
                                              new StringReader(pagina.Conteudo));
              ViewBag.Html = html.ToString();
              return View();
            }
        }
       
    

Ao retornar a View(), será mostrado conteúdo através do arquivo PreviewDinamico.cshtml

      
        < div class=" content">@Html.Raw(ViewBag.Html) 
       
    

Abaixo segue parte do Html dinâmico que foi criado na variável conteúdo. Note que foi inserido um objeto chamado model.

Este objeto model foi criado na ActionResult PreviewDinamico, na variável modelo, inserindo no contexto, chamando como model.

      
        < h1>Danilo < /h1>  < span>Aparecido < /span> 
        
        < h1>Tabela: $model.Header < /h1>

        < table class = "table"> 
          < tr> 
            < td>Id < /td>
            < td>Nome < /td>
            < td>Negrito < /td>
          < /tr>

          #foreach ($item in $model.Itens) 
            < tr> 
              < td>$item.Id < /td>
              < td>$item.Nome < /td>
              < td> 
                #if ($item.Negrito)
                  < b>$item.Negrito  < /b>
                #else 
                  $item.Negrito 
                #end
              < /td>
            < /tr>
          #end
        < /table>