2

我想写一个剃刀宏MySelectMacro来选择要渲染的umbraco:item 。

我对这种情况的简单结构是两页-MasterPage 和 TextPage- 并且 TextPage 包含两个富文本编辑器类型的字段-field_1 和 field_2-

这是我的尝试,但不起作用,

这是文本页模板:

<asp:Content ContentPlaceHolderId="MainPageContent" runat="server">
        <umbraco:Macro Alias="MySelectMacro" runat="server" />
</asp:Content>

这是宏MySelectMacro

@if (condition)
{
    <umbraco:Item field="field_1" runat="server" />
}
else
{
    <umbraco:Item field="field_2" runat="server" />
}

注意:我是 umbraco 和剃须刀的新手

4

3 回答 3

3

您不能在剃刀模板中使用服务器标签。像这样的标签:

<umbraco:Item field="field_1" runat="server" />

但是你可以打电话

@Model.field_1

最终版本应如下所示:

@if (condition)
{
    @Model.field_1
}
else
{
    @Model.field_2
}

查看这篇关于 umbraco 中剃刀宏的帖子:http ://www.diplo.co.uk/blog/2011/6/17/using-razor-in-umbraco-47.aspx

于 2013-09-02T09:04:30.830 回答
0

您不能混合使用 WebForm 和 Razor 语法!

新 Razor 语法中旧 umbraco:item 的等价物是:

@Umbraco.Field("field_1")

您还可以传入各种参数,包括带段标签标志:

@Umbraco.Field("field_1", removeParagraphTags = true)
于 2015-08-05T15:44:56.427 回答
0

我只是偶然发现了这个答案,对于像我这样阅读的其他人来说:在 2015 年及以后,它不是@Model.field但是@Dictionary["field"].

它在这里解释:

https://our.umbraco.org/documentation/reference/template/macros/razor/using-dictionary-items

无论如何,由配额和括号所包含的字段名称不会干扰 ASP 脚本的其余部分,即使它包含特殊字符。

于 2015-08-05T12:07:10.037 回答