2014-02-13 44 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也可以加載相應的字段。