Можно ли использовать двигатель Razor View View за пределами ASP.NET

StackOverflow https://stackoverflow.com/questions/3628895

Вопрос

Если я посмотрю на двигатель Razor View, то я вижу очень хороший и краткий синтаксис, который особо не привязан к генерации HTML. Поэтому мне интересно, насколько легко использовать двигатель за пределами ASP.NET в «нормальной» среде .NET, например, для генерации текста, кода, ...

Любой указатель, пример, комментарий или объяснение приветствуется.

Это было полезно?

Решение

Здесь есть две проблемы:

  1. Да, вы можете запустить двигатель Razor View за пределами контекста домена ASP.NET App, как объяснено в блоге Andrew's: http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of-aspnet-revized-for-mvc3-rc.html.
  2. Тем не менее, бритва все еще в первую очередь сосредоточен на генерировании XML-подобной разметки (например, HTML) в том смысле, что бритвенный парсер использует наличие <tags> Чтобы определить переход между кодом и разметкой. Возможно, вы можете использовать его для генерации любого текста, но вы можете столкнуться с проблемами, когда ваш выход не соответствует допущениям бритве о том, что являются вашими намерениями.

Так, например, пока это действительный код бритвы (из-за <div> ярлык):

@if(printHello) {
   <div>Hello!</div>
}

Следующий фрагмент недействителен (потому что привет! Все еще рассматривается как код):

@if(printHello) {
   Hello!
}

Однако есть особый <text> тег, который может быть использован для форсирования перехода для многострочных блоков ( <text> Тег не будет отображаться):

@if(printHello) {
   <text>Hello!
   Another line</text>
}

Существует также более короткий синтаксис, чтобы заставить одну линию к переходу с использованием @::

@if(printHello) {
   @:Hello!
}

Другие советы

Проверять Razorengine., Это маленький каркас, построенный на вершине бритвы, что позволяет это сделать.

Взгляни на Развернуть библиотека. Это более легкий, чем библиотека Razorengine, она безопасна и имеет очень хороший минимальный интерфейс.

Компиляция и рендеринга шаблона так же просто, как две строки кода:

var template = Template.Compile("Hello @Model.Name!");
Console.WriteLine(template.Render(new { Name = "World" }));

Оба Razorengine. и Развернуть уже упоминаются здесь, но проверьте Омормачин. Отказ Вы можете просто указать свое приложение Non-MVC в папку ~ / View of (другое) существующего приложения MVC, выполнить с отправкой правильной модели и получить выходные данные на 2 строки кода:

var sb = new StringBuilder();

//RazorMachine magic:
//*tweets* is basically List<TwitterPost> - simple collection of custom POCO
//first param for rm.ExecuteUrl points to ~/Views folder, MVC style
var rm = new RazorMachine(htmlEncode: false);
ITemplate template = rm.ExecuteUrl("~/twitter/twitter", tweets);

//do whatever you want with result
sb.Append(template);

Создать код или текст: вы имеете в виду, как шаблоны T4: http://msdn.microsoft.com/en-us/library/bb126445.aspx. или инструменты для кодовых инструментов?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top