访问Sitecore模板字段值

访问Sitecore模板字段值,sitecore,sitecore-mvc,Sitecore,Sitecore Mvc,这可能在某个地方有记录,但我找不到 我正在使用Sitecore helper和razor语法将值放入我的视图中: @Html.Sitecore().Field("foo"); 这很好,但是,我在组中定义了字段,其中一些字段具有相同的名称,如: 第一组:富 第二组:富 问题:有没有办法按组访问字段? 类似这样的内容(我已经尝试过): 尝试通过字段的GUID访问。这样,即使它们具有相同的名称,API也可以加载相应的字段。尝试通过字段的GUID进行访问。这样,即使它们具有相同的名称,API也可以加

这可能在某个地方有记录,但我找不到

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

@Html.Sitecore().Field("foo"); 
这很好,但是,我在组中定义了字段,其中一些字段具有相同的名称,如:

第一组:富

第二组:富

问题:有没有办法按组访问字段? 类似这样的内容(我已经尝试过):


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

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

只要我知道不可能使用节名称

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

或者,一个选项是传递字段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模板一样自动生成它)


据我所知,不可能使用分区名称

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

或者,一个选项是传递字段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模板一样自动生成它)


你为什么建议我避免在不同的部分使用相同的名称?我并不反对它,但似乎如果有部分,那么从逻辑上讲,我应该能够这样使用它们。它们不能用于查找字段。查看Sitecore的数据定义参考PDF“2.1.2数据模板节”:“字段始终存储在节中。但是,节仅反映在内容编辑器中。程序员从字段提取内容时不需要指示节。”参考:正如您和Jay S所指出的,使用字段的项目ID是有效的。然而,我仍然不清楚你的第二个选择是什么意思。我发现Field方法没有重载,它采用了您描述的类型。我更新了答案,解释了我的意思。它将只是一个常规的类或结构,您在其中创建ID。为什么建议我避免在不同的部分使用相同的名称?我并不反对它,但似乎如果有部分,那么从逻辑上讲,我应该能够这样使用它们。它们不能用于查找字段。查看Sitecore的数据定义参考PDF“2.1.2数据模板节”:“字段始终存储在节中。但是,节仅反映在内容编辑器中。程序员从字段提取内容时不需要指示节。”参考:正如您和Jay S所指出的,使用字段的项目ID是有效的。然而,我仍然不清楚你的第二个选择是什么意思。我发现Field方法没有重载,它采用了您描述的类型。我更新了答案,解释了我的意思。它将只是一个您创建的带有ID的常规类或结构。
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}");
    }
}