【发布时间】:2026-01-22 03:25:01
【问题描述】:
我想获取一个项目的字段名称列表,但无法正常工作。
这是我目前的尝试:
if (pathItemInLanguage.Versions.GetVersions().Length == 0)
{
Item newItemLangVersion = pathItemInLanguage.Versions.AddVersion();
//Populate the new language version with values:
newItemLangVersion.Editing.BeginEdit();
newItemLangVersion.Fields.ReadAll();
foreach (Field field in newItemLangVersion.Fields)
{
string dn = "nix";
dn = field.DisplayName;
string n = "nix";
n = field.Name;
string k = "nix";
k = field.Key;
string xy = "nix";
xy = field.ToString();
if ((FieldTypeManager.GetField(Sitecore.Context.Item.Fields[field.DisplayName]) is HtmlField) ||
(FieldTypeManager.GetField(Sitecore.Context.Item.Fields[field.DisplayName]) is TextField))
{
newItemLangVersion.Fields[field.Name].Value = "new";
}
}
newItemLangVersion.Editing.EndEdit();
我从字段中读取的那些字符串都没有给出项目的实际字段名称。该应用程序在 Sitecore 桌面内作为模块运行。
我错过了什么?
【问题讨论】:
-
您是否尝试使用 (new Sitecore.SecurityModel.SecurityDisabler()) 添加?
-
否,但将实际字段名作为字符串传递,例如 newItemLangVersion.Fields["Title"].Value = "new";作品。安全性仍然是问题吗?
-
是的,可能是个问题。请在调试模式下检查您的 Sitecore.Context.UserName 是什么?并检查您对要编辑的项目拥有哪些权限
-
就这么做了。用户是 sitecore\admin,这是意料之中的,因为应用程序从 Sitecore 桌面作为模块运行。
-
field.Name和field.Key的值是多少?它们是空的吗?里面有什么吗?