2016-02-10 10 views
2

在我的模板我有Droplist的字段類型映射到一個文件夾Sitecore的持有價值爲Droplist在這種情況下是顏色的Sitecore的droplist獲得字段值。這是爲了讓編輯不能打字錯誤或發明一種顏色,這不在預先定義的列表中。如何從作爲一個預定義的列表

使顏色基於掀起了模板我稱之爲標籤其中有「色」的單個字段類型,在這裏我創建了一系列使用該模板創建的樣本列表顏色的項目。

當我進入主模板,我及時看到在Droplist的顏色值,以便它的工作,我會想到它,因爲我可以訪問該字段的值:

tileValues.Attributes["class"] += " tile-" + Item.Fields["Tile Colour"].Value.ToLower(); 

但是我有它不使用實現字段值的模板,而是我稱爲該項目的名稱。所以它只是一個錯誤,它實現了我想要的結果。

但是我將如何得到最終的代碼項目的實際字段值。我有場景中會有多語言編輯器,所以我們可以命名的標籤,胭脂,相思等,這是什麼樣的編輯器會看到在Droplist選擇,但我們需要的字段的顏色值還是說紅色或白色等

我想:

Item.Fields["Tile Colour"].Item.Fields["Colour"].Value 

但這未能儘管API暗示暗示其有效。

我希望這是有道理的,有人可以幫助我獲得實際的字段值,而不是項目的名稱。

+2

你可以用它代替droplist –

回答

3

由於Sitecore Climber寫道,請勿使用Droplist字段類型 - 它僅存儲項目名稱,並且無法在後面的代碼中獲取項目本身。

使用Droplink字段類型 - 它存儲的項目ID。

然後你就可以得到項目:

Item colourItem = Sitecore.Context.Database.GetItem(Item["Tile Colour"]); 
if (colourItem != null) 
{ 
    string colour = colourItem["Colour"]; 
| 
+0

再次感謝馬立克droplink - 我已經換出的字段類型來droplink和復位的項目的價值 - 使用上述代碼我收到錯誤 - 異常詳細信息:System.NullReferenceException:對象引用未設置爲對象的實例。關於行 string color = colourItem [「Color」]; 顏色設置併發布在droplink指向的文件夾內的模板上。 – user3779703

+0

是否發佈顏色項目? – ddysart

+0

如果你已經使用了我的代碼,你不會得到異常 - 有一個空的檢查;)你需要調試和檢查'Item [「Tile Color」](它應該是一個GUID)的值是什麼,以及是否具有該GUID的項目在您的Web數據庫中。 –

相關問題