Sitecore:查找所选项目的字段值

时间:2012-10-25 13:00:27

标签: sitecore

我正在尝试在Sub Sub中创建一些自定义代码。

我要建立一个时事通讯,可以在一些文章上撰写时事通讯。 文章可以由标题/子标题/标题和图像组成。

可以,因为子标题或图像不是强制性的。 为了避免时事通讯电子邮件中出现任何空白/缺失图像,我想根据内容创建一个特定的HTML。

如果没有图像,则不显示图像控件,如果没有子标题,则不显示子标题控件;

为此,我使用以下不起作用的代码:(

    Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item home = master.GetItem("/sitecore/content/Home");

if(home != null && home.Fields != null)
{
string name = home.Fields["Image"].Name; -> Which Fields["Image"] returns null.
}

是否有另一种方法来检索所选文章的字段?由于我的代码根本不起作用,我不明白如何检索所选项的字段值。

谢谢。

2 个答案:

答案 0 :(得分:2)

在您的示例中,home.Fields只是检查以确保Fields集合存在。在尝试提取名称之前,您不会检查“图像”字段中是否有值。

你可能需要这样的东西:

if(home != null && home.Fields != null && home.Fields["Image"] != null)
{
   string name = home.Fields["Image"].Name;
}

根据您的评论,您似乎正在尝试从组件的数据源中提取图像字段。如果你想在这种情况下做某事之前有条件地检查图像字段,那么我想要处理很多可能的空例外。代码可能应该是这样的:

var parent = ((Sitecore.Web.UI.WebControl)Parent);
if(parent != null){
   Item dataSourceItem = string.IsNullOrWhiteSpace(parent.DataSource) ? null : Sitecore.Context.Database.GetItem(parent.DataSource);

   if(dataSourceItem != null && dataSourceItem.Fields != null && dataSourceItem.Fields["Image"]!=null){
       string name=dataSourceItem.Fields["Image"].Name;
   }
}

答案 1 :(得分:0)

这是一种简单的方法:

Sitecore.Context.Item.Fields["You field name"]