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.
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:
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) div>
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>
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.
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:
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) div>
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>