【问题标题】:Select "umbraco item" using razor使用剃须刀选择“umbraco item”
【发布时间】:2013-09-02 09:01:06
【问题描述】:

我想编写一个 razor 宏 MySelectMacro 来选择要渲染的 umbraco:item

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

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

这是 TextPage 模板:

<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" />
}

nb:我是 umbraco 和剃须刀的新手

【问题讨论】:

    标签: .net asp.net-mvc asp.net-mvc-3 razor umbraco


    【解决方案1】:

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

    <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

    【讨论】:

    • 感谢@Andrei,这很有帮助,但我认为您只是错过了在“最终版本”中的“Model.field_1”之前写“@”
    • 谢谢,让我解决它
    • 实际上,由于您已经在代码块中,因此您不需要模型上的 @ ;-) - 但很高兴 OP 已启动并运行!
    【解决方案2】:

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

    这里有解释:

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

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

    【讨论】:

    • 后续问题仍未解决:如何在 razor 脚本中发送stripParagraph="true"
    【解决方案3】:

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

    新 Razor 语法中旧 umbraco:item 的等效项是:

    @Umbraco.Field("field_1")
    

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

    @Umbraco.Field("field_1", removeParagraphTags = true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-04
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多