dropcore的sitecore mvc值

时间:2014-06-16 15:58:50

标签: asp.net-mvc-4 sitecore razor-2 sitecore-mvc

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

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

我想获得选择的价值,最好的方法是什么?

3 个答案:

答案 0 :(得分: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"))

答案 1 :(得分:1)

如果您需要能够编辑在上下文项目的'对齐' droplink字段中选择的对齐项目的字段,或者只显示对齐项目的值#s访客的字段:

@{
    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>

此示例假定对齐模板包含&#39;对齐文字&#39; 字段。

答案 2 :(得分:0)

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

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

这将为您提供drop链接中set设置的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。