gpt4 book ai didi

layout - RazorEngine - 使用布局和 Html.Raw

转载 作者:行者123 更新时间:2023-12-04 12:48:56 24 4
gpt4 key购买 nike

我想将以下 Razor 模板与 RazorEngine 一起使用:

@{
Layout = null;
}

@Html.Raw(MyNamespace.MyClass.SomePropertyWithHtml)

当我调用它时,我收到 2 个错误 - 一个提示它无法处理 Layout,另一个提示它不知道如何处理 Html helper。

这里还有其他问题和答案表明这在 v3 中是可能的,我正在使用 NuGet 上的当前包 - v3.0.8 - 但不清楚这是如何完成的。目前我这样称呼它:
string html = RazorEngine.Razor.Parse(File.ReadAllText(path));

其他答案建议首先使用 Razor.SetBaseTemplate,它不会出现在当前源或 git 上的 3.0 分支中。查看代码,我看到代码引用了布局和部分,但布局代码似乎取决于按名称解析模板,而我正在尝试做的甚至不需要解析模板 - 我只需要它来应对Layout = null。该代码还包括一个 MvcTemplateBase,它似乎在 Web 项目中提供了一个 HtmlHelper - 但它是该项目中唯一的类,并且在 Web 或 Core 项目中的任何地方都没有被引用。

这个类似的问题:
RazorEngine issues with @Html

只需链接到主页,说明您可以在那里找到更多信息 - 主页只是描述项目的简短句子。

那么,如何使用 RazorEngine v3.0 解析上述 Razor View ?

最佳答案

Layout属性(property)和Html助手不属于 TemplateBase ,以及MvcTemplateBase的执行这是 RazorEngine 最新版本的一部分(v3.4.1) 似乎不完整( InitHelpers 似乎没有初始化助手?)。您需要创建自己的基本模板来实现这些功能。

正如您所指出的,v3+ 版本不包括 Razor.SetBaseTemplate方法。您可以在当前版本中设置基本模板类型,如下所示:

var config = new RazorEngine.Configuration.TemplateServiceConfiguration
{
BaseTemplateType = typeof(MyTemplateBase<>)
};

using (var service = new RazorEngine.Templating.TemplateService(config))
{
Razor.SetTemplateService(service);
return MvcHtmlString.Create(Razor.Parse<TModel>(templateText, model));
}

如果您需要初始化助手,覆盖 CreateInstance 可能会有所帮助。在 IActivator 的自定义实现中,可以提供给 TemplateServiceConfiguration喜欢 BaseTemplateType :
var config = new RazorEngine.Configuration.TemplateServiceConfiguration
{
BaseTemplateType = typeof(MyTemplateBase<>),
Activator = new MyActivator()
};

关于layout - RazorEngine - 使用布局和 Html.Raw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10429337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com