我正在从代码隐藏文件中动态分配Sitecore图像控件的字段名称,如下所示:
的.ascx
<sc:Image runat="server" ID="scImgRelatedArticle"></sc:Image>
.ascx.cs
if(currentItem != null)
{
Sitecore.Web.UI.WebControls.Date scDateArticleDate = e.Item.FindControl("scDateArticleDate") as Sitecore.Web.UI.WebControls.Date;
if (scDateArticleDate != null)
{
if (DisplayDates)
{
scDateArticleDate.Field = StartDateFieldName;
scDateArticleDate.Item = currentItem;
}
}
}
有时当前Item为null我不想分配任何字段值。我不想显示该项目。但我最终得到一条错误消息“字段属性是必需的。所有字段Web控件都需要设置字段名称。”
如果我没有指定scDateArticleDate.Item属性,sitecore中是否有办法自动执行此操作。
答案 0 :(得分:1)
您应该始终设置Field属性
scDateArticleDate.Field = StartDateFieldName // where is a string right!
然后根据您是否拥有该项目来控制项目的可见性。
另请注意,您在ascx中发布图像,在.cs
中发布日期字段完整的代码将是
scDateArticleDate.Field = StartDateFieldName; //always set the field
if(currentItem != null)
{
Sitecore.Web.UI.WebControls.Date scDateArticleDate = e.Item.FindControl("scDateArticleDate") as Sitecore.Web.UI.WebControls.Date;
if (scDateArticleDate != null)
{
if (DisplayDates)
{
scDateArticleDate.Item = currentItem;
scDateArticleDate.Visible = true;
}
else
{
scDateArticleDate.Visible = false;
}
}
}
欢呼声
答案 1 :(得分:1)
您没有将Sitecore字段分配给sc:image Web控件,它应该用作:
Sitecore.Data.Fields.Date scDateArticleDate=(Sitecore.Data.Fields.Date)e.Item.FindControl("scDateArticleDate");