我想获取所有字段以及元数据模式的元数据字段的类型/数据类型。
我在下面编写了示例代码来实现功能,我可以获取Name,Description等但找不到任何类型为/ dataType的属性。如果您有任何想法,请建议......
var client = new SessionAwareCoreService2010Client();
client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName";
client.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
client.Open();
if (client.State == System.ServiceModel.CommunicationState.Opened)
{
var schemaUri = "tcm:1-47-8";
var fields= client.ReadSchemaFields(schemaUri, true, new ReadOptions());
var fieldName = fields.MetadataFields[0].Name;
}
答案 0 :(得分:6)
要知道字段的类型,您只需要检查字段的.NET类型。 我通常使用“是”检查,但如果需要,也可以调用GetType。
例如:
var client = new SessionAwareCoreService2010Client();
client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName";
client.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
client.Open();
if (client.State == System.ServiceModel.CommunicationState.Opened)
{
var schemaUri = "tcm:1-47-8";
var fields= client.ReadSchemaFields(schemaUri, true, new ReadOptions());
foreach (var field in fields.MetadataFields)
{
if (field is SingleLineTextFieldDefinitionData)
{
// Do something specifically for single-line text fields
}
}
}
答案 1 :(得分:2)
ReadSchemaFields
方法仅公开字段的 定义 。因此,它实际上是您在模式中定义字段时输入的属性的包装。
内容和元数据分别由ComponentData.Content
和ComponentData.Metadata
公开。但是这些是作为XML字符串公开的,所以你必须自己解析它们。
如果你(可以理解)不喜欢这样,请看看这个助手班:http://code.google.com/p/tridion-practice/wiki/ChangeContentOrMetadata
您可能还想阅读我对此问题的回答:Updating Components using the Core Service in SDL Tridion 2011