【问题标题】:Accessing Sitecore template field values访问 Sitecore 模板字段值
【发布时间】:2014-02-20 04:18:55
【问题描述】:

这可能记录在某处,但我找不到。

我正在使用 Sitecore 帮助器和 razor 语法将值放入我的视图中:

@Html.Sitecore().Field("foo"); 

这很好用,但是,我在组中定义了字段,其中一些具有相同的名称,例如:

Group1: foo

Group2: foo

问题:有没有办法按组访问字段? 像这样的东西(我已经尝试过):

@Html.Sitecore().Field("Group1.foo");

【问题讨论】:

    标签: sitecore sitecore-mvc


    【解决方案1】:

    只要我知道不可能使用部分名称。

    即使在不同的部分之间,我也会避免使用相同的字段名称。

    或者一个选项是传递字段 ID,然后创建类或常量来非硬编码 ID

    @Html.Sitecore().Field("{E77E229A-2A34-4F03-9A3E-A8636076CBDB}");
    
    or
    
    @Html.Sitecore().Field(MyTemplate.MyGroup.Foo); //where foo returns the id.
    

    编辑:

    MyTemplate.MyGroup.Foo 将是您自己创建的类/结构,只是为了使整个项目中的引用更容易、更可靠。 (您可以使用工具自动生成它,就像 T4 模板一样)

    public static struct MyTemplate
    {
        public static struct MyGroup1
        {
            public static readonly ID Foo = new ID("{1111111-1111-1231-1231-12312323132}");
        }
        public static struct MyGroup2
        {
            public static readonly ID Foo = new ID("{9999999-9999-xxxx-1231-12312323132}");
        }
    }
    

    【讨论】:

    • 你为什么建议我避免在不同的部分使用相同的名称?我不反对,不过好像有段的话,按道理我应该可以这样用。
    • 该部分仅用于将数据组织给内容作者。它们不能用于查找字段。查看 Sitecore 的数据定义参考 PDF “2.1.2 数据模板部分”:“字段始终存储在一个部分中。但是,部分仅反映在内容编辑器中。程序员在提取内容时不需要指定部分来自一个领域。”参考:sdn.sitecore.net/upload/sitecore6/…
    • 正如您和 Jay S 指出的那样,使用该字段的项目 ID 是有效的。但是,我仍然不清楚您的第二个选项是什么意思。我发现没有采用您所描述的类型的 Field 方法的重载。
    • 我更新了答案,解释了我的意思。它只是您创建的带有 id 的常规类或结构。
    【解决方案2】:

    尝试通过字段的 GUID 访问。这样,即使它们具有相同的名称,API 也将能够加载相应的字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多