你在 Umbraco 中使用过/Base扩展吗?我相信这可能会对您有所帮助,因为我有类似的要求并且发现 /Base 非常强大。在我的文档类型中,我实际上使用了一个多行文本框作为 html(或者在我的情况下为 Razor 脚本)的输入。在我的 /Base 类中,我创建了一个查找正确节点的方法,从文本框中获取原始脚本,将脚本呈现为原始 html 字符串,并返回包含在 tag 中的字符串。
public static string GetRazor()
{
var doc = new DynamicNode(nodeId);
string razorScript = doc.GetPropertyValue("{propertyAlias}");
string razorString = RenderRazor.RenderRazorScriptString(razorScript, nodeId);
return razorString;
}
另一种方法是在 Umbraco 中创建一个模板可以调用的宏,例如:
@using umbraco.MacroEngines
@{
dynamic node = @Model;
string htmlString = node.GetPropertyValue("{propertyAlias}");
@Html.Raw(htmlString)
}
然后在您的模板中,您只需要注入宏:
<umbraco:Macro Alias="{RazorAlias}" runat="server"></umbraco:Macro>
razor 引擎将呈现文本框中的任何 html!
-担