我有下面的代码可以使用,但使用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>
答案 0 :(得分:1)
只要您的视图继承自Umbraco.Web.Mvc.UmbracoTemplatePage
或Umbraco.Web.Mvc.UmbracoViewPage<YourModel>
,您就应该能够编写如下内容:
@Umbraco.RenderMacro("MacroAlias", new { ParameterAlias1 = "value1", ParameterAlias2 = "value2" })
所以在你的情况下,它将是:
@Umbraco.RenderMacro("Security-PressLogin", new { TargetNode = "targetNodeValue" })
如果您正在谈论从另一个宏中调用一个宏,那么只要您的宏部分视图继承自Umbraco.Web.Macros.PartialViewMacroPage
在您的示例中,您似乎正在使用umbraco.MacroEngines
使用传统剃刀宏。如果可能,我建议升级到局部视图宏。 Click here了解更多信息。
答案 1 :(得分:0)
我知道这个问题已有一年了,但我希望有人能够找到这些信息(使用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 }))