2014-02-13 51 views
1

这可能记录在某处,但我找不到它。访问Sitecore模板字段值

我使用Sitecore的助手和剃刀语法将值代入我的观点:

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

这工作得很好,但是,在I组已字段定义,其中一些具有相同的名称,像:

组别1:富

组2:富

问:有什么办法按组访问的领域呢? 像这样的东西(我已经尝试过):

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

回答

5

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

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

还是一个选项是通过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}"); 
    } 
} 
+0

为什么你建议我避免在不同部分有相同的名称?我不反对,但似乎如果有部分,那么在逻辑上我应该能够以这种方式使用它们。 – iGanja

+1

该部分仅用于将数据组织到内容作者。它们不能用于查找字段。 查看Sitecore的数据定义参考PDF“2.1.2数据模板部分”: “字段始终存储在 内部,但部分仅在内容编辑器中反映出来,程序员不需要指示 部分从字段中提取内容。“ ref:http://sdn.sitecore.net/upload/sitecore6/datadefinitionreference-a4.pdf – RobertoBr

+0

使用该字段的项目ID作为您和Jay S指出的。但是,我仍然不清楚你的第二个选项是什么意思。我发现Field方法没有重载,它采用你描述的类型。 – iGanja

1

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