如何从 sitecore Webservice 修改新创建的 Item/Page 的字段值

Posted

技术标签:

【中文标题】如何从 sitecore Webservice 修改新创建的 Item/Page 的字段值【英文标题】:How to modify the field values of newly created Item/Page from sitecore Webservice 【发布时间】:2014-09-26 16:18:31 【问题描述】:

通过使用 Sitecore 网络服务,我创建了一个新的页面项目,如下所示。

var scClient = new VisualSitecoreServiceSoapClient();
// another code
var xmlNode = scClient.AddFromTemplate(parentId, pagetemplateId,itemName,database,credentials)

我不能使用数据库项目,只能使用网络服务。

从 xmlNode 我得到新创建的 GUID/Id。如何仅从 Web 服务编辑新创建的 Item 的字段?

【问题讨论】:

你可能想看看这里的 InsertXML 方法 - sdn.sitecore.net/upload/sitecore6/65/… 【参考方案1】:

您可以像这样使用Save() 方法:

string itemId = // id from AddFromTemplate() xmlNode 
string fieldId = "some-id-of-the-field"; // id of the field

XDocument fieldXml = new XDocument(
    new XElement("sitecore",
        new XElement("field",
            new XAttribute("itemid", itemId),
            new XAttribute("language", "en"),
            new XAttribute("version", 1),
            new XAttribute("fieldid", fieldId),
            new XElement("value", "new value of the field")
        )
    )
);

XElement fieldResponse = scClient.Save(fieldXml, "web", credentials);

编辑:

回复您的评论:不,您不能使用字段名称代替字段 ID。您仍然可以使用VisualSitecoreServiceSoapClient 中公开的GetItemFields 方法列出项目的所有字段,然后确定具有给定名称的字段的 id 是什么:

public XmlDocument GetItemFields(string id, string language, string version, bool allFields, string databaseName, Credentials credentials)

【讨论】:

感谢 Maras,我可以使用您的代码修改该字段。有没有办法可以使用字段名称而不是字段 ID 进行修改? 您不能使用字段名称。查看更新的答案和解释 讲道理马拉斯,我会按照你的建议去做。再次感谢您的帮助。

以上是关于如何从 sitecore Webservice 修改新创建的 Item/Page 的字段值的主要内容,如果未能解决你的问题,请参考以下文章

Azure VM Cloud - 如何从本地访问 Sitecore 实例

从 Sitecore 8.0 升级后启动板设计未加载

如何在 sitecore 中获取媒体项目详细信息?

无法从 sitecore 删除外联网用户

如何安装 Sitecore 的试用版

Sitecore 获取存档项目