【问题标题】:Get type of metadata fields of a Metadata schema获取元数据模式的元数据字段类型
【发布时间】:2012-08-24 12:05:07
【问题描述】:

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

我已经编写了下面的示例代码来实现该功能,并且我能够获取名称、描述等,但找不到任何具有类型/数据类型的属性。如果你们中的任何人有任何想法,请提出建议...

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;
}

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    要知道字段的类型,您只需要检查字段的 .NET 类型。 我通常使用“is”检查,但您也可以根据需要调用 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
            }
        }
    }
    

    【讨论】:

    • 嗨,彼得,感谢您的回复,下面的其他人的帮助是字段可能的所有数据类型的代码:-
    • MultiLineTextFieldDefinitionData、KeywordFieldDefinitionData、NumberFieldDefinitionData、DateFieldDefinitionData、EmbeddedSchemaFieldDefinitionData、ExternalLinkFieldDefinitionData、MultimediaLinkFieldDefinitionData、ComponentLinkFieldDefinitionData
    【解决方案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

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      • 2015-09-06
      • 2013-10-16
      • 2023-02-23
      • 2010-10-27
      • 2017-11-21
      相关资源
      最近更新 更多