现场财产是必需的。所有字段Web控件都需要设置字段名称

时间:2014-03-20 16:29:19

标签: c# asp.net sitecore sitecore-dms

我正在从代码隐藏文件中动态分配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中是否有办法自动执行此操作。

2 个答案:

答案 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");