【问题标题】:Umbraco 6.2.0 Render maco inside a razor macroscriptUmbraco 6.2.0 在 razor 宏脚本中渲染 maco
【发布时间】:2016-03-03 04:30:41
【问题描述】:

我有下面的代码,但有没有更好的方法使用 RenderMacroContent 方法。不知道如何添加参数。

<umbraco:Macro runat="server" language="cshtml">@{
HtmlTextWriter writer = new HtmlTextWriter(this.Output);
var macroPressLogin = new umbraco.presentation.templateControls.Macro();
macroPressLogin.Alias = "Security-PressLogin";
macroPressLogin.Attributes.Add("TargetNode", Parameter.TargetNode);
macroPressLogin.RenderControl(writer);   }</umbraco:Macro>

【问题讨论】:

    标签: umbraco


    【解决方案1】:

    只要您的视图继承自Umbraco.Web.Mvc.UmbracoTemplatePageUmbraco.Web.Mvc.UmbracoViewPage&lt;YourModel&gt;,您就应该能够编写如下内容:

    @Umbraco.RenderMacro("MacroAlias", new { ParameterAlias1 = "value1", ParameterAlias2 = "value2" })
    

    所以你的情况是:

    @Umbraco.RenderMacro("Security-PressLogin", new { TargetNode = "targetNodeValue" })
    

    如果您正在谈论从另一个宏中调用一个宏,那么只要您的宏局部视图继承自 Umbraco.Web.Macros.PartialViewMacroPage,这也应该可以工作

    从您的示例看来,您正在使用 umbraco.MacroEngines 处理旧版 razor 宏。如果可能的话,我建议升级到局部视图宏。 Click here 了解更多信息。

    【讨论】:

    • 谢谢,但不使用 mvc。带有参数的 RenderMacroContent 是我所追求的。
    【解决方案2】:

    我知道这个问题已经有一年的历史了,但我希望有人能找到这个信息的用途(使用 Umbraco 6.x 版):

    @(Html.Raw(umbraco.library.RenderMacroContent("<?UMBRACO_MACRO macroAlias=\"MacroAliasHere\" dynamicParameter=\""+ @dynamicValue + "\" staticParameter=\"staticValue\" ></?UMBRACO_MACRO>", Model.Id)))
    

    我更喜欢的选项 2 实际上是使用表单选择器数据类型中的值输出轮廓表单的代码:

    var helper = new UmbracoHelper(UmbracoContext.Current);
    @Html.Raw(helper.RenderMacro("umbracoContour.RazorRenderForm", new { formGuid = @Model.formPickerAlias }))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2011-10-16
      • 2014-12-13
      • 2015-05-22
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      相关资源
      最近更新 更多