Umbraco 6.2.0在剃刀宏观内部渲染maco

时间:2015-01-28 17:05:27

标签: umbraco

我有下面的代码可以使用,但使用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>

2 个答案:

答案 0 :(得分:1)

只要您的视图继承自Umbraco.Web.Mvc.UmbracoTemplatePageUmbraco.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 }))