.NET Razor engine - реализация макетов
Я использую следующий фрагмент для включить настройку Razor в моем решении (вне ASP.NET MVC3). Можно ли легко реализовать макеты?
Фоновая информация:
Я на этом этапе (шаблоны скомпилированы в 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;
Я могу представить себе свойство Layout
в моем классе RazorTemplateBase
. Но потом? Я понимаю, что Html.Partial
- вспомогательная функция, которую я могу просто реализовать для анализа шаблона. Но как разобрать эти вызовы методов renderBody()
или renderSection()
, чтобы принимать другие виды Razor?
Ответы
Ответ 1
В настоящее время я работаю над чем-то очень похожим. Это основанная на Нэнси структура шаблонов для интерфейсов. Я расширил реализацию Nancy Razor от Phil Haack. Мне удалось получить Partials, Templated Helpers и Layouts.
Чтобы сделать макет, у меня есть свойство Layout, и внутри макета у меня есть заполнитель содержимого "{{content}}". Поэтому, когда я визуализую представление, если установлено свойство Layout, я визуализирую макет и заменяю его.
Проект называется Appia. Посмотрите на примеры просмотров.
Вот моя реализация baseView реализация baseView и вот механизм просмотра код. Это занимает много от реализации MVC Razor, а также имеет некоторые специфичные для Нэнси вещи, но не должно быть слишком сложно понять, что происходит.