2012-01-20 7 views
1

Мой шаблон выглядит следующим образом:RazorEngine v2.1 метание "Объект является пустым" исключение на Razor.Parse

@using RazorEngine; 
@model System.String 
@{ 
    var content = @"<div id=""text-block-container""> 
      @Html.Raw(""<h1>test</h2>"") 
    </div>"; 
    Razor.SetTemplateBase(typeof(MvcTemplateBase<>)); 

    var output = Razor.Parse<MyType>(content, new MyType()); 
} 
<div> 
    @Html.Raw(output) 
</div> 

MvcTemplateBase выглядит следующим образом:

public abstract class MvcTemplateBase<T> : TemplateBase<T> { 
    public HtmlHelper<object> Html { get; private set; } 
    public UrlHelper Url { get; private set; } 

    public void InitHelpers() { 
     var httpContext = new HttpContextWrapper(HttpContext.Current); 
     var handler = httpContext.CurrentHandler as MvcHandler; 
     if (handler == null) 
      throw new InvalidOperationException("Unable to run template outside of ASP.NET MVC"); 
    } 

Edited название: Я понял, что вызывало ошибку «Clear», не определенную. У меня была собственная версия TemplateBase, и это была версия, в которую были помещены имена. Поскольку я не определил метод Clear в моей реализации, который вызвал ошибку.

Теперь я получаю исключение null на Razor.Parse call, даже если входы не являются нулевыми, как «raw», так и поставляемая модель инициализируются и имеют значения.

Отредактировано для исправления ошибки незначительного кодирования в примере.

ответ

1

Тип MvcTemplateBase<T> еще не разработан, и версия, которую вы используете в настоящее время, является очень ранней незавершенной версией.

Я бы спросил, почему вы пытаетесь запустить шаблон RazorEngine в представлении MVC Razor?

+0

Я на самом деле не запускаю это из приложения MVC. Это динамически скомпилированный шаблон для генерации сообщений электронной почты и сообщений из внутренних служб. Я думаю о пересмотре этого и просто развертывании отдельного приложения обмена MVC для обработки этого как службы. – Mike

+0

Но мой вопрос: почему вы пытаетесь запустить шаблон из шаблона? Тип 'MvcTemplateBase ' предназначен для типа шаблона, совместимого с MVC, для использования в среде MVC. –

+0

Ну, я начал отвечать длинным подробным «Я этого не делаю ... это то, что я делаю». Короткий ответ: я на самом деле этого не делаю. Этот код больше не существует в моей базе кода. Я предполагаю, что это был вопрос, который был опубликован в исследовании, которое я делал. Я решил проблему, которую я пытался решить без этого кода. В то время проблема заключалась в том, что мне нужно было вставить по существу статический html из базы данных в шаблон. Эта функция позволяет клиентам настраивать определенные аспекты контента на странице, специфичной для их развертывания на сайте. – Mike

Смежные вопросы