.NET Razor engine-Implementando diseños
(1)
Actualmente estoy trabajando en algo muy similar. Es un framework de plantillas basado en Nancy. Extendí la implementación de Nancy''s Razor por Phil Haack. Me las he arreglado para conseguir que funcionen los parciales, los ayudantes de plantillas y los diseños.
Para representar el diseño tengo una propiedad de Diseño y dentro del diseño tengo un marcador de posición de contenido "{{contenido}}". Entonces, cuando represento la vista, si la propiedad Diseño está configurada, represento el diseño y luego reemplazo el marcador de posición del contenido.
El proyecto se llama Appia . Echa un vistazo a las vistas de muestra .
Aquí está mi implementación baseView implementación baseView y aquí está el código del motor de visualización . Se toma mucho de la implementación de MVC Razor y también tiene algunas cosas específicas de Nancy, pero no debería ser demasiado difícil averiguar qué está pasando.
Estoy usando el siguiente fragmento de código para habilitar las plantillas de Razor en mi solución (fuera de ASP.NET MVC3). ¿Es posible implementar fácilmente diseños?
Información de fondo:
Estoy en este punto (las plantillas se compilan en compiledTemplateAssembly
):
var template = (RazorTemplateBase<TModel>) compiledTemplateAssembly.
CreateInstance("RazorSpace." + entry.TemplateName + "Template");
template.Model = model;
template.Execute();
var output = template.Buffer.ToString();
template.Buffer.Clear();
return output;
Puedo imaginar tener una propiedad de Layout
en mi clase RazorTemplateBase
. ¿Pero entonces? Entiendo que Html.Partial
es una función auxiliar que puedo implementar para analizar una plantilla. Pero, ¿cómo puedo analizar las llamadas a método renderBody()
o renderSection()
para aceptar otras vistas de Razor?