Asp.net mvc 4 droplink的sitecore mvc值

Asp.net mvc 4 droplink的sitecore mvc值,asp.net-mvc-4,sitecore,razor-2,sitecore-mvc,Asp.net Mvc 4,Sitecore,Razor 2,Sitecore Mvc,我正在寻找获取droplink字段的引用项值的最简单方法 @Html.Sitecore().Field("Alignment") 我想获取选项的值,最佳方法是什么?Droplink字段存储引用的项目的ID。要检索此ID(假设该字段存在于当前项目/模型中): ((LinkField)Model.Item.Fields[“Alignment”])。Value 要输出引用项的名称,可以执行以下操作: @(Model.Item.Database.GetItem(((LinkField)Model.It

我正在寻找获取droplink字段的引用项值的最简单方法

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

我想获取选项的值,最佳方法是什么?

Droplink字段存储引用的项目的ID。要检索此ID(假设该字段存在于当前项目/模型中):

((LinkField)Model.Item.Fields[“Alignment”])。Value

要输出引用项的名称,可以执行以下操作:

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

但那真的很难看。首选的方法是创建一个封装上述部分内容的扩展方法,这样就不必重新键入:D

John West的文章展示了如何扩展SitecoreHelper类以添加自定义字段呈现器,从而最终创建一个整洁的可重用代码段,如:


@(Html.Sitecore().ReferenceField(“对齐”、“名称”))

如果这是一个局部视图,即.cshtml文件,您也可以使用如下内容:

Sitecore.Data.Fields.TextField alignment= Model.Item.Fields["Alignment"];
这将为您提供drop链接中设置项的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。

如果您需要能够编辑在上下文项目的“对齐”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>
@{
Sitecore.Data.Fields.ReferenceField alignmentField=Sitecore.Context.Item.Fields[“对齐”];
Sitecore.Data.Items.Item alignmentItem=alignmentField.TargetItem;
}
@Html.Sitecore().Field(“对齐文本”,alignmentItem)

本例假设对齐模板包含“对齐文本”字段。

这里的关键是类型为
ReferenceField
,而不是前面排名靠前的答案中的
LinkField