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");
}
編輯的標題:我想通了什麼導致「清除」未定義的錯誤。我有我自己的TemplateBase版本定義,這是命名空間的版本。因爲我沒有在我的實現中定義一個導致錯誤的Clear方法。
現在我在Razor.Parse調用中得到一個空的異常,即使輸入不爲空,'raw'和提供的模型都被初始化並且具有值。
編輯以糾正示例中的小編碼錯誤。
我實際上並沒有從MVC應用程序運行這個。這是一個動態編譯的模板,用於從後端服務生成電子郵件和消息。我正在考慮重新考慮這一點,只是部署一個單獨的MVC消息應用程序來處理這個服務。 – Mike
但我的問題是,你爲什麼試圖從模板內運行模板? 'MvcTemplateBase'類型被設計爲MVC兼容的模板類型,用於MVC環境。 –
好吧,我開始用一個詳細的答案回答:「我沒有這樣做......這就是我正在做的事情。」簡短的回答是我實際上並沒有這樣做。此代碼不再存在於我的代碼庫中。我猜這是在我正在做的研究峯會上發佈的一個問題。我已經解決了我試圖解決的問題,而沒有任何此代碼。問題是當時試圖解決的是我需要從數據庫中插入基本上靜態的html到模板中。此功能允許客戶在特定於其站點部署的頁面中配置內容的某些方面。 – Mike