这可能记录在某处,但我找不到它。访问Sitecore模板字段值
我使用Sitecore的助手和剃刀语法将值代入我的观点:
@Html.Sitecore().Field("foo");
这工作得很好,但是,在I组已字段定义,其中一些具有相同的名称,像:
组别1:富
组2:富
问:有什么办法按组访问的领域呢? 像这样的东西(我已经尝试过):
@Html.Sitecore().Field("Group1.foo");
这可能记录在某处,但我找不到它。访问Sitecore模板字段值
我使用Sitecore的助手和剃刀语法将值代入我的观点:
@Html.Sitecore().Field("foo");
这工作得很好,但是,在I组已字段定义,其中一些具有相同的名称,像:
组别1:富
组2:富
问:有什么办法按组访问的领域呢? 像这样的东西(我已经尝试过):
@Html.Sitecore().Field("Group1.foo");
只要我知道它是不可能使用部分名称。
即使在不同部分之间,我也会避免使用相同的字段名称。
还是一个选项是通过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}");
}
}
尝试通过现场的GUID访问。这样,即使它们具有相同的名称,API也可以加载相应的字段。
为什么你建议我避免在不同部分有相同的名称?我不反对,但似乎如果有部分,那么在逻辑上我应该能够以这种方式使用它们。 – iGanja
该部分仅用于将数据组织到内容作者。它们不能用于查找字段。 查看Sitecore的数据定义参考PDF“2.1.2数据模板部分”: “字段始终存储在 内部,但部分仅在内容编辑器中反映出来,程序员不需要指示 部分从字段中提取内容。“ ref:http://sdn.sitecore.net/upload/sitecore6/datadefinitionreference-a4.pdf – RobertoBr
使用该字段的项目ID作为您和Jay S指出的。但是,我仍然不清楚你的第二个选项是什么意思。我发现Field方法没有重载,它采用你描述的类型。 – iGanja