Frage

Ich verwende den Code des folgenden Links, um Metadatenfelder zu verarbeiten:-

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

Wenn ich jedoch versuche, dem Metadatenfeld vom Typ Datum einen Wert zuzuweisen, wird der folgende XML-Validierungsfehler angezeigt:-

" System.Servicemodell.FehleRausnahme'1 [Mein Projekt.Servicereferenz.CoreServiceFault]:XML-Validierungsfehler.Grund:Das Element 'uuid: myUUID: DateField' ist ungültig - Der Wert '10/4/2012 03:04:00 AM' ist entsprechend seinem Datentyp ungültig'http://www.w3.org/2001/XMLSchema:dateTime ' - Die Zeichenfolge '10/4/2012 03:04:00 AM' ist kein gültiger Datums- / Uhrzeitwert..(Fehlerdetail ist gleich Mein Projekt.Servicereferenz.CoreServiceFault)"

Unabhängig davon, ob ich den Wert als Zeichenfolge oder als Datums- / Uhrzeitdatentyp zuweise, wird derselbe Fehler angezeigt. Ich habe auch versucht, die AddValue-Methode mit einem Datums- / Uhrzeitdatentyp zu überladen, aber bisher hat nichts funktioniert.

Codeausschnitt der AddValue-Methode:-

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

Bitte schlagen Sie eine Lösung für den Datums- und Nummerndatentyp vor.Danke im Voraus

War es hilfreich?

Lösung 5

Nach einiger Fehlersuche löse ich endlich das Problem und zusammen mit dem Datum des Datums.Dazu muss ich mit der Zeitzone des Servers der Zeitzone meines lokalen Computers übereinstimmen.

und unten ist der Code der überlasteten Methode: -

generasacodicetagpre.

Andere Tipps

Die Fehlermeldung ist ziemlich explizit über die Tatsache, dass Ihr Datumsformat falsch ist: The string '10/4/2012 03:04:00 AM' is not a valid DateTime value.

Das Format, das Tridion erwartet, ist YYYY-MM-DDThh:mm:ss, also kein Leerzeichen, keine Zeitzone und keine AM / PM-Markierung.

In offiziellen Tridion-APIs sind Sie normalerweise davor geschützt, die Konvertierung selbst durchführen zu müssen, da sie dies akzeptieren DateTime objekte und wandeln sie in das richtige Format für Sie.Da die von Ihnen verwendete Hilfsklasse jedoch keine offizielle API ist, sind einige Verknüpfungen erforderlich, und Sie müssen den Wert als festlegen string.

Ich benutze normalerweise datetime.ToString("u").Replace(" ", "T").Replace("Z", "") um die Daten im richtigen Format zu erhalten.

Die Datumszeichenfolge sollte ein Format haben wie:

    .
  • yyyy-mm-ddthh: mm: ss

Beispiel:

    .
  • "2012-10-03t09: 39: 43"

Darüber hinaus scheint mir die Art und Weise, wie Sie das Datum einstellen, ein bisschen komplex für mich, da Sie den Inhalt und den Metadaten-Wrapper verwenden, warum nicht so etwas:

generasacodicetagpre.

Wie in meiner C # -erfahrung erfahren Sie, dass ein solcher Fehler aufgrund des Problems der DateTime-Format vorliegt. Sie können es unter Code versuchen

generasacodicetagpre.

Ich habe es nicht mit Ihrem Code getestet, aber ich hoffe, es wird in Ihrem Fall arbeiten.

Sie fehlen den 'T'-Separator zwischen Datum und Uhrzeit in Ihrem Format.Sie haben erwähnt, dass das Datum der Ausgabe in einem Format liegt, das Sie erneut einsetzen, aber egal, was ausgegeben wird, kann trotzdem formatiert werden, und nicht unbedingt die Art und Weise, wie Sie das Datum angeben müssen.

Die XMLSchema-DateTime-Spezifikation finden Sie hier: http:// www.w3.org/tr/xmlschema-2/#DateTime

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top