Размещение Razor View Engine с использованием модели представления - PullRequest
1 голос
/ 15 декабря 2010

Я хотел бы использовать Razor View Engine вне ASP.NET MVC для генерации HTML для электронных писем, мне нравится синтаксис, и, кажется, нет необходимости использовать другой шаблонизатор, когда у меня уже есть Razor в моем проекте.

Итак, я оглянулся и нашел это руководство о том, как это сделать .. http://blog.andrewnurse.net/2010/11/16/HostingRazorOutsideOfASPNetRevisedForMVC3RC.aspx

К сожалению, я не могу найти какой-либо способ указать модель представления, что грустно, потому что мне бы очень хотелось иметь строго типизированные представления даже для моих электронных писем.

Так есть ли способ синтаксического анализа шаблонов Razor вне ASP.NET MVC со строго типизированными моделями представлений или это такая большая проблема, что это не стоит хлопот?

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

С последней стабильной RazorEngine достаточно указать

@inherits RazorEngine.Templating.TemplateBase<MyModel>

, если вам не нужны дополнительные функции

2 голосов
/ 15 декабря 2010

Использование тега @model на самом деле является ярлыком для тега @inherits.

Вы указываете класс, от которого будет сгенерирован ваш сгенерированный класс из класса, указанного с помощью @оризонт.

Так что если вы укажете @inherits MyTemplate<MyModel>

MyTemplate должен выглядеть так:

class MyTemplate<T> {
    public T Model { get; set; }

    public abstract void Execute();
    public virtual void Write(object value) {
        WriteLiteral(value);
    }

    public virtual void WriteLiteral(object value) {
        // Actual writing goes here
    }

}

В результате анализа бритвы вам нужно скомпилировать и создать экземпляр из.

После создания экземпляра вы можете установить свойство Model и вызвать Execute, чтобы сгенерировать результат, как и что вы генерируете, решать только вам.

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