Как стать автором
Обновить

Комментарии 20

Как насчет?
блин… как насчет чего-то типа @include?
Самый простой способ — определить в классе TemplateBase метод Include(templateName, model), который будет исполнять включаемый шаблон и возвращать результат.
Крута, ждал такой статьи.
Имхо, не самое гибкое решение для подобной задачи. При каждом изменении шаблона потребуется пересобирать, да еще и нужен доступ к файловой системе для создания сборок.
Я как-то не вижу плюсов, хотя бы сравнение скорости привели, что ли.
Хмм. ну так можно собирать динамически, после каждого измнения шаблона.
Для файловой системы можно использовать временные папки, через Path.GetTempPath()
Это понятно, что можно. Вопрос не в этом, вопрос в том, что на том же NVelocity,
я пишу:

var employee = new Employee(){Name = "Vasya", LastName = "Pupkin"};

VelocityContext context = new VelocityContext();
context.Put("employee", employee);

string template = @"Greetings, $employee.Name $employee.LastName!";

using(System.IO.StringWriter writer = new System.IO.StringWriter())
{
Velocity.MergeTemplate(template, context, writer);
}


и получаю на выходе тот же результат:

Greetings, Vasya Pupkin!



Поэтому мне интересно — нафига мне писать в 10 раз больше, заморачиваться перекомпиляцией и временными папками, какие от этого плюсы?

Возможно есть плюс за счет прекомпилированной сборки, которая представляет собой просто набор команд Response.Write(..).
Я незнаком с NVelocity, так что думаю вы правы и было бы неплохо провести тесты.
Ну, супер, буду ждать продолжения. Пока что все это сильно отдает дешевым популизмом. )
Ну, в данном конкретном случае, возможно, что выгоды и не будет. Но я думаю, что всегда полезно знать о нескольких возможных путях решения задачи, чтобы при необходимости выбрать лучший.
Отличные статьи, как-то они прошли мимо меня.
А вот у меня вопрос к знатокам. Я с MVC пока особо не знаком, так что, возможно, спрашиваю какую-нибудь глупость, но зачем было писать новый движок, когда есть XSLT? И, если подобное имеет смысл, то, может, есть уже где-нибудь результаты сравнения производительности/потребления памяти Razer vs XSLT?
Впрос тока в удобстве. У меня XSLT не ассоциируется с удобством.
быстрее должен быть однозначно. но на сколько, было бы интересно глянуть.
Если Razer не умеет делать compiled версию (по аналогии с XSLT compiled transformation) — не факт.
Razor не умеет делать не-compiled версию ;-)

Но если есть интерес, почему не сравнить? Не для того, чтобы померяться, а чтобы знать. Пока кандидатов на сравнение два – NVelocity и XSLT Compiled Transform.
ASP.NET MVC позволяет использовать разные движки представлений. Можно даже свой написать в принципе. Razor — это Microsoft'овская более лаконичная альтернатива своему же движку WebForms (ну или как он там правильно)
Тож в копилочку


var template = "Hello @Model.Name! Welcome to Razor!";
var result = Razor.Parse(template, new { Name = "World" });


razorengine.codeplex.com/
Ссылка на перевод краткого справочника по синтаксису Razor уже битая. Перевод также, как и оригинальная статья, был обновлен и теперь находиться по адресу — taritsyn.wordpress.com/2011/01/08/kratkij-spravochnik-po-sintaksisu-razor.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории