Использование Razor без MVC
Возможный дубликат:
Можно ли использовать Razor View Engine за пределами asp.net?
Мне нужно объединить шаблоны с данными для создания уникальных строк во время выполнения. Было предложено взглянуть на движок шаблонного представления Razor, который поставляется в ASP.NET MVC 3. Выглядит великолепно, но мне нужно использовать его вне создания MVC-представления.
Я знаю, что могу использовать ядро Razor напрямую, но я также нашел несколько проектов, которые упрощают использование Razor напрямую. Подобно:
- Rick Strahl's Razor Hosting Template Engine - http://www.west-wind.com/weblog/posts/864461.aspx
- Razor Engine на GitHub - https://github.com/Antaris/RazorEngine
У кого-нибудь есть рекомендации по использованию Razor вне MVC в качестве автономного движка шаблонов? Есть опыт работы с этими обертками? есть ли другие реализации хостинга Razor, на которые мне стоит обратить внимание?
6 ответов
Вы можете взглянуть на следующий пост в блоге, который иллюстрирует, как вы можете использовать механизм представления Razor для рендеринга шаблона в строку.
Если вы хотите создать реальный контент из шаблона бритвы. Пожалуйста, используйте RazorEngine.
Посмотрите на библиотеку RazorTemplates. Он более легкий, чем библиотека RazorEngine, он потокобезопасен и имеет очень приятный минимальный интерфейс.
Фил Хаак написал о том, как сделать это, используя сгенерированный класс.
Вы создаете файл.cshtml и затем используете расширение времени компиляции для файла, чтобы сгенерировать класс. Тогда вы можете просто сделать это:
var template = new RazorTemplate { Model = new[] { new {Name = "Scott", Id = 1}, new {Name = "Steve", Id = 2}, new {Name = "Phil", Id = 3}, new {Name = "David", Id = 4} } }; Console.WriteLine(template.TransformText());
Есть хороший пост, как использовать RazorEngine: Как создать локализуемый текстовый шаблонизатор с помощью RazorEngine
Нашел действительно хорошую библиотеку Яапа Ламферса:
Шаблонизатор Razor 2.0, поддерживающий макеты (на CodeProject)
Качество:
- поддержка _ViewStart
- Поддержка макета
- расширяемый (поддерживает что-то вроде MVC ViewEngines)
- содержит образцы
- много юнит-тестов
- это хорошо задокументировано (см. ссылку на CodeProject)