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