我正在尝试在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.
}
是否有另一种方法来检索所选文章的字段?由于我的代码根本不起作用,我不明白如何检索所选项的字段值。
谢谢。
答案 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"]