非常に複雑な Umbraco のカミソリ スクリプトがあり、ある時点でマクロをレンダリングしたいと考えています。
SuggestionBox と呼ばれるマクロは、実際にはユーザー コントロール (.ascx) であり、伝統的にこれはテンプレートで参照されます。
<umbraco:macro Alias="SuggestionBox" language="cshtml" runat="server"></umbraco:macro>
しかし、代わりにかみそりスクリプトから呼び出す必要があるので、試しました。
@Html.Raw(umbraco.library.RenderMacroContent("SuggestionBox", Model.Id))
としても:
@RenderPage("SuggestionBox")
これらを間違って使用していると確信しているので、これまでのところ運はありません。
ページがマスターページでラップされている場合、実行できない可能性があることをどこかで読みました。
従来のようにテンプレートに追加すると機能します。
<umbraco:macro Alias="EventsRenderer" language="cshtml" runat="server"></umbraco:macro>
<div class="talkingPointPanel">
<h3><umbraco:Item field="talkingPoinstSuggestionText" runat="server"></umbraco:Item></h3>
<umbraco:macro Alias="SuggestionBox" language="cshtml" runat="server"></umbraco:macro>
</div>
EventsRenderer が、理想的には SuggestionBox を含むページをレンダリングする場所。
使用して
@Html.Raw(umbraco.library.RenderMacroContent("<?UMBRACO_MACRO macroAlias=\"SuggestionBox\" />", Model.Id))
このエラーが表示されます:
<!-- Error generating macroContent: 'System.Web.HttpException (0x80004005): HtmlForm cannot render without a reference to the Page instance. Make sure your form has been added to the control tree.
at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at umbraco.presentation.templateControls.Macro.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at umbraco.library.RenderMacroContent(String Text, Int32 PageId)' -->
何か案は?