获取元数据模式的元数据字段类型

时间:2012-08-24 12:05:07

标签: tridion tridion-2011

我想获取所有字段以及元数据模式的元数据字段的类型/数据类型。

我在下面编写了示例代码来实现功能,我可以获取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;
}

2 个答案:

答案 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.ContentComponentData.Metadata公开。但是这些是作为XML字符串公开的,所以你必须自己解析它们。

如果你(可以理解)不喜欢这样,请看看这个助手班:http://code.google.com/p/tridion-practice/wiki/ChangeContentOrMetadata

您可能还想阅读我对此问题的回答:Updating Components using the Core Service in SDL Tridion 2011