我想用下面的剃刀模板,RazorEngine:RazorEngine - 利用佈局Html.Raw
@{
Layout = null;
}
@Html.Raw(MyNamespace.MyClass.SomePropertyWithHtml)
當我把它叫做我得到2個錯誤 - 一個抱怨它不能處理版式,另一個抱怨說它不知道如何處理Html幫手。
這裏還有其他問題和答案,建議在v3中這是可行的,而且我正在使用NuGet上的當前軟件包 - v3.0.8 - 但目前尚不清楚這是如何完成的。目前我調用它像這樣:
string html = RazorEngine.Razor.Parse(File.ReadAllText(path));
其他答案建議使用Razor.SetBaseTemplate第一,它不會出現在電流源或混帳的3.0分支。看代碼,我看到代碼引用佈局和部分,但佈局代碼似乎依賴於通過名稱解析模板,而我試圖做甚至不需要解析模板 - 我只是需要它來應付Layout = null。該代碼還包括一個MvcTemplateBase,它似乎在Web項目中提供了一個HtmlHelper - 但它是該項目中的唯一類,並未在Web或Core項目中的任何位置引用。
這類似的問題: RazorEngine issues with @Html
只是鏈接到網頁上說,你可以找到更多有 - 網頁僅僅是描述項目的短句。
那麼,如何用RazorEngine v3.0解析上述Razor視圖?
噢,你正在使用RazorEngine ...有一點需要記住的是Razor不是MVC。新的RazorEngine已經完成了很多工作,但Antaris最近真的很忙。您應該可以在文件頂部使用'@inherits MvcTemplateBase'來使用它。 –
Buildstarted
感謝您的建議。我意識到Razor和MVC是分開的,但我的目標是在正常的ASP.Net管道內外使用相同的MVC Razor模板。 NuGet上的版本不包含名爲MvcTemplateBase的類。 Git的最新版本確實如此,但它不是通用的 - 它只是MvcTemplateBase。如果我添加一行像@inherits RazorEngine.Razor.MvcTemplateBase我在TemplateService.SetModelExplicit中得到一個異常,抱怨模板類型沒有名爲Model的屬性。想法? –