Мой шаблон выглядит так:
@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");
}
Отредактированный заголовок: я выяснил, что вызывает ошибку «Очистить», не определенную.У меня была определена моя собственная версия TemplateBase, и это была версия, в которую было помещено пространство имен.Так как я не определил метод Clear в моей реализации, который вызвал ошибку.
Теперь я получаю нулевое исключение при вызове Razor.Parse, даже если входные данные не равны NULL, как 'raw', так ипредоставленная модель инициализируется и имеет значения.
Редактируется для исправления незначительной ошибки кодирования в примере.