1

次のリンクのコードを使用して、メタデータ フィールドを処理しています:-

https://code.google.com/p/tridion-practice/wiki/ChangeContentOrMetadata

しかし、日付型のメタデータ フィールドに値を割り当てようとすると、次の xml 検証エラーが発生します。

" System.ServiceModel.FaultException`1 [myPorject.serviceReference.CoreServiceFault]: XML 検証エラー。理由: 'uuid:myUUID:dateField' 要素が無効です - 値 '10/4/2012 03:04:00 AM' はそのデータ型 'http://www.w3.org/2001/XMLSchema:dateTime' によると無効 - 文字列 '10/4/2012 03:04:00 AM' は有効な DateTime 値ではありません.. (障害の詳細はmyPorject.serviceReference.CoreServiceFault に等しい)"

値を文字列として割り当てるか、DateTime データ型として割り当てるかに関係なく、同じエラーが発生します。また、AddValue メソッドを Datetime データ型でオーバーロードしようとしましたが、これまでのところ何も機能していません。

AddValue メソッドのコード スニペット:-

     public void AddValue(string value1)
    {
        string value = string.IsNullOrEmpty(value1) ? null : value1; ;
        XmlElement newElement = fields.AddFieldElement(definition);
        if (value != null) newElement.InnerText = value;
    }

日付と数値の両方のデータ型の解決策を提案してください。前もって感謝します

4

5 に答える 5

6

エラー メッセージは、日付形式が間違っているという事実を明確に示していますThe string '10/4/2012 03:04:00 AM' is not a valid DateTime value

Tridion が期待する形式はYYYY-MM-DDThh:mm:ssであるため、スペース、タイムゾーン、AM/PM マーカーはありません。

公式の Tridion API では、DateTimeオブジェクトを受け入れて正しい形式に変換するため、通常、自分で変換を行う必要はありません。ただし、使用するヘルパー クラスは公式の API ではないため、いくつかのショートカットが必要で、値をstring.

私は通常datetime.ToString("u").Replace(" ", "T").Replace("Z", "")、正しい形式で日付を取得するために使用します。

于 2012-10-03T11:13:25.903 に答える
5

日付文字列は次のような形式にする必要があります。

  • YYYY-MM-DDThh:mm:ss

例:

  • "2012-10-03T09:39:43"

それに加えて、コンテンツとメタデータのラッパーを使用していることを考えると、日付を設定する方法は私には少し複雑に思えます。

string myStringDate = "2012-10-03T09:39:43";
fields["DateFieldName"].Value = myStringDate;
component.Metadata = fields.ToString();
于 2012-10-03T08:03:15.963 に答える
2

私のC#の経験によると、このようなエラーは日時形式の問題が原因で発生します。以下のコードを試すことができます

DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd");

私はあなたのコードでそれをテストしていませんが、あなたの場合にうまくいくことを願っています。

于 2012-10-03T05:44:58.993 に答える
1

形式の日付と時刻の間に「T」区切り文字がありません。出力された日付は、再挿入しようとしている形式であると述べましたが、出力されたものは何でも書式設定でき、必ずしも日付を指定する必要があるとは限りません。

XMLSchema の dateTime 仕様をよく読んでください: http://www.w3.org/TR/xmlschema-2/#dateTime

于 2012-10-03T11:09:21.810 に答える
0

いくつかのトラブルシューティングの後、私は最終的に問題を解決し、日付の形式も一緒に解決しました。このために、ローカルマシンのタイムゾーンをサーバーのタイムゾーンと一致させる必要があります。

そして、以下はオーバーロードされたメソッドのコードです:-

      public void AddValue(DateTime value1)
    {
        DateTime value = value1 == null ? DateTime.MinValue : value1;

        XmlElement newElement = fields.AddFieldElement(definition);
        if (value != null) newElement.InnerText = value.ToString("yyyy-MM-ddThh:mm:ss");
    }
于 2012-10-04T08:24:56.157 に答える