Движок .NET Razor - Реализация макетов - PullRequest
16 голосов
/ 09 мая 2011

Я использую следующий фрагмент для включения шаблонов 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 Ответ

6 голосов
/ 17 мая 2011

Я сейчас работаю над чем-то очень похожим. Это шаблонная структура внешнего интерфейса, основанная на Нэнси. Я расширил реализацию Nancy's Razor от Phil Haack. Мне удалось заставить работать Partials, Templated Helpers и Layouts.

Для рендеринга макета у меня есть свойство Layout, а внутри макета у меня есть заполнитель содержимого "{{content}}". Поэтому, когда я отображаю представление, если установлено свойство Layout, я отображаю макет, а затем заменяю заполнитель содержимого.

Проект называется Appia . Взгляните на примерные виды .

Вот моя реализация baseView реализация baseView, а вот код механизма представления . Он многое заимствует из реализации MVC Razor, а также содержит некоторые специфические для Нэнси вещи, но не должно быть слишком сложно понять, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...