gpt4 book ai didi

.net - 从 Umbraco 4.7 中的 razor 宏渲染 ascx 用户控件

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

我遇到过这个问题before从来没有让它工作,但这次我别无选择,真的需要让它工作。

我有一个简单的 ascx 控件,它可以读取 RSS 提要并以简单的 html 格式输出它。背后的代码非常简单。

然后我有一个 razor 脚本来呈现整个页面,并在该页面的特定区域内添加我的 ascx 控件。

如果我像这样直接在模板上添加控件:

<umbraco:macro Alias="SubnavRenderer" language="cshtml" runat="server"></umbraco:macro>

它运行良好,但博客条目显示在内容之外。

所以在 razor 脚本中我做了这样的事情:

foreach (var item in Model.Children) 
{
...
else if(item.NodeTypeAlias == "Blog")
{
@Html.Raw(umbraco.library.RenderMacroContent("<?UMBRACO_MACRO macroAlias=\"BlogRenderer\"></?UMBRACO_MACRO>", Model.Id));
}
}

这会呈现一个空的 div,但内容无法在其中呈现,因此宏无法正常工作。我怀疑它与页面的生命周期有关。该宏有一个可能被跳过的 page_load 事件或类似事件。

有什么想法吗?非常感谢

最佳答案

当我第一次阅读您的帖子时,我打算建议您在需要宏的地方添加一个 asp:PlaceHolder,然后使用 Page PreInit事件动态生成控件并将其弹出到占位符中。

我还打算建议您使用 uQuery (它带有 ucomponents 并且在 4.8 的 Umbraco 核心中 - 这样你的 razor 脚本就可以简化为:

Model.GetNodesByType("博客");

但看看您的 html.raw 命令,也许这就是问题所在 - 您不应该使用 item.Id 而不是 Model.Id 吗?

编辑

你可以试试 escaping your macro declaration - that's worked for me before ;您也可以添加 runat="server"属性。

关于.net - 从 Umbraco 4.7 中的 razor 宏渲染 ascx 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056447/

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