Мой шаблон выглядит следующим образом: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», так и поставляемая модель инициализируются и имеют значения.
Отредактировано для исправления ошибки незначительного кодирования в примере.
Я на самом деле не запускаю это из приложения MVC. Это динамически скомпилированный шаблон для генерации сообщений электронной почты и сообщений из внутренних служб. Я думаю о пересмотре этого и просто развертывании отдельного приложения обмена MVC для обработки этого как службы. – Mike
Но мой вопрос: почему вы пытаетесь запустить шаблон из шаблона? Тип 'MvcTemplateBase' предназначен для типа шаблона, совместимого с MVC, для использования в среде MVC. –
Ну, я начал отвечать длинным подробным «Я этого не делаю ... это то, что я делаю». Короткий ответ: я на самом деле этого не делаю. Этот код больше не существует в моей базе кода. Я предполагаю, что это был вопрос, который был опубликован в исследовании, которое я делал. Я решил проблему, которую я пытался решить без этого кода. В то время проблема заключалась в том, что мне нужно было вставить по существу статический html из базы данных в шаблон. Эта функция позволяет клиентам настраивать определенные аспекты контента на странице, специфичной для их развертывания на сайте. – Mike