2014-06-16 28 views
3

我正在尋找最簡單的方法來獲取droplink字段的引用項目值。droplink的sitecore mvc值

@Html.Sitecore().Field("Alignment") 

我想獲得選擇的價值,什麼是最好的方法?

回答

1

Droplink字段存儲引用的項目的ID。要檢索該ID(提供勵磁存在於當前的項目/型號):

((LinkField)Model.Item.Fields["Alignment"]).Value

爲了輸出所引用的項目的名稱,你可以做這樣的事情:

@(Model.Item.Database.GetItem(((LinkField)Model.Item.Fields["Alignment"]).Value).Name)

但那真的很難看。首選的方法是創建一個擴展方法封裝上述某些因此您不必重新輸入:D

John West的文章Extending the SitecoreHelper Class顯示瞭如何擴展SitecoreHelper類以添加自定義字段渲染器,所以你可能最終會像創造一個整潔的可重複使用的片段:

@(Html.Sitecore().ReferenceField("Alignment","Name"))

0

如果這是一個局部視圖,即.cshtml文件,你也可以使用類似如下:

Sitecore.Data.Fields.TextField alignment= Model.Item.Fields["Alignment"]; 

這會給你在下拉連桿的設定項目的ID,然後從該ID可以從數據庫中檢索它像:

@if (!string.IsNullOrWhiteSpace(alignment.Value)) 
{ 
    var setAlignment = Sitecore.Context.Database.GetItem(alignment.Value); 
    if (setAlignment != null && !string.IsNullOrWhiteSpace(setAlignment.Name)) 
    { 
    setAlignment.Name 
    } 
} 

我個人更喜歡這種方式,我可以檢查droplink設置在嘗試使用該值之前。

1

如果你需要有編輯這是選擇在「對齊」上下文項的droplink場或只顯示校準項目的字段的值,供遊人對齊項目領域的能力:

@{ 
    Sitecore.Data.Fields.ReferenceField alignmentField = Sitecore.Context.Item.Fields["Alignment"]; 
    Sitecore.Data.Items.Item alignmentItem = alignmentField.TargetItem; 
} 

<div> 
    @Html.Sitecore().Field("Text of Alignment", alignmentItem) 
</div> 

這個例子假設對齊模板包含'文本對齊'字段。

+0

這裏的關鍵是類型是'ReferenceField'而不是'LinkField',就像在前一個評分最高的答案中一樣。 –