2011-05-09 11 views
16

Estoy usando el siguiente fragmento de código para enable Razor templating in my solution (fuera de ASP.NET MVC3). ¿Es posible fácilmente implementar diseños?.NET Razor engine - Implementación de diseños

información Antecedentes:

estoy en este punto (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 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 esas llamadas al método renderBody() o renderSection() para aceptar otras vistas de Razor?

+3

@casperOne: Aprecio la edición, sin embargo esto no tiene nada que ver con MVC3. Retrocedí debido a esto, sin embargo, otras ediciones (que no sean etiquetas) también se retrotraen ... – Ropstah

+2

@Ropstah: Veo eso ahora (no seguí el enlace). Debería especificar eso en la pregunta de alguna manera (es decir, "Estoy usando el motor de creación de plantillas Razor fuera de ASP.NET MVC3" con "usar el motor de plantillas Razor fuera de ASP.NET MVC3" vinculado) para dejarlo en claro a los demás (la mayoría asumirá que está en ASP.NET MVC3. Guarde el formato del código; actualmente no está limpio y le quita valor a la pregunta. – casperOne

+2

@Ropstah: Simplemente lo seguí y lo hice. Debe estar claro como el día. – casperOne

Respuesta

6

Actualmente estoy trabajando en algo muy similar. Es un framework de plantillas front-end basado en Nancy. Amplié la implementación Nancy's Razor de Phil Haack. Logré que funcionen los parciales, los ayudantes con plantilla 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}}". Por lo tanto, cuando visualizo la vista si la propiedad Diseño está configurada, renderizo el diseño y luego reemplazo el marcador de posición de contenido.

El proyecto se llama Appia. Eche un vistazo al sample views.

Aquí está mi baseView implementation implementación baseView y aquí está el view engine code. 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 descubrir lo que está sucediendo.

+0

Buena respuesta Martin, votado a favor! –