【问题标题】:Sitecore how to edit an Items's Standard Field ValueSitecore 如何编辑项目的标准字段值
【发布时间】:2015-09-14 19:56:03
【问题描述】:

在 Sitecore 中,我有一个项目。可以说它的名字是weekDay。它有一个默认字段(标准字段)Sortorder。我想编辑这个字段并在里面放一个字符串。但是下面的代码给我System.NullReferenceException: Object reference not set to an instance of an object.

switch (weekDay.Name.ToLower())
{
    case "monday":
        weekDay.Editing.BeginEdit();
        weekDay.Fields["Sortorder"].Value = "1";
        weekDay.Editing.EndEdit();
        break;
}

我在上面的代码中weekDay.Fields["Sortorder"].Value = "1";这一行遇到异常。

任何帮助将不胜感激。谢谢!!

【问题讨论】:

    标签: sitecore sitecore7 sitecore7.5


    【解决方案1】:

    您的代码没问题。唯一的问题是该字段不称为"Sortorder",而是称为"__Sortorder"。试试:

    weekDay.Fields["__Sortorder"].Value = "1";
    

    大多数 Sitecore 标准字段都以双下划线为前缀,例如__Sortorder__Hidden__Display Name__Read Only

    【讨论】:

      【解决方案2】:

      大部分标准字段都以__(双下划线)为前缀,所以字段名实际上是"__Sortorder"

      weekDay.Fields["__Sortorder"].Value = "1";
      
      // Or use the field ID from Sitecore.FieldIDs class
      weekDay.Fields[Sitecore.FieldIDs.Sortorder].Value = "1";
      

      Sitecore.FieldIDs 类包含许多(如果不是全部)标准字段的字段 ID。

      【讨论】:

        【解决方案3】:

        你能检查一下 weekDay 是否为 null 吗?我猜 weekDay 项目是 null

        要编辑工作日项目,您将拥有:

         if (weekDay!=null)
             {
            using (new EditContext(weekDay))  
             {  
                switch (weekDay.Name.ToLower())
                            {
                                case "monday":
                                    weekDay.Fields["__Sortorder"].Value = "1";
                                    break;
                             }
               }
              }
        

        【讨论】:

        • 感谢您的回答,但该项目不为空。我尝试编辑其他一些字段(由我添加),并且可以正确访问它。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多