كيفية تعيين قيمة البيانات الوصفية مجال التاريخ أو عدد نوع ؟

StackOverflow https://stackoverflow.com//questions/12702329

سؤال

أنا باستخدام الرابط التالي التعليمات البرمجية لمعالجة حقول البيانات الوصفية:-

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

ولكن عند محاولة تعيين قيمة البيانات الوصفية الحقل من نوع تاريخ ثم أنا على الحصول على ما يلي التحقق من صحة xml الخطأ:-

" النظام.ServiceModel.FaultException`1 [myPorject.serviceReference.CoreServiceFault]:XML خطأ التحقق من صحة.السبب:إن 'uuid:myUUID:dateField' عنصر غير صالح - قيمة '10/4/2012 03:04:00' غير صالح حسب نوع البيانات 'http://www.w3.org/2001/XMLSchema:dateTime' - سلسلة '10/4/2012 03:04:00' غير صالحة قيمة..(خطأ التفاصيل يساوي myPorject.serviceReference.CoreServiceFault)"

بغض النظر عن ما إذا كان تعيين قيمة السلسلة أو نوع بيانات التاريخ والوقت أنا على الحصول على نفس الخطأ ، كما أنني حاولت أن تفرط في ادفاليو الأسلوب مع نوع بيانات التاريخ والوقت ولكن لا شيء عملت حتى الآن.

ادفاليو الأسلوب مقتطف الشفرة:-

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

يرجى اقتراح الحل لكل رقم وتاريخ نوع البيانات.شكرا مقدما

هل كانت مفيدة؟

المحلول 5

بعد بعض المتاعب اطلاق النار أخيرا حل المشكلة وإلى جانب تنسيق التاريخ.لذلك، أحتاج إلى مطابقة المنطقة الزمنية لآذائري المحلية مع المنطقة الزمنية للخادم.

وتحت رمز الطريقة المثقلة: -

giveacodicetagpre.

نصائح أخرى

رسالة الخطأ واضحة تماما عن حقيقة أن تنسيق التاريخ هو الخطأ: The string '10/4/2012 03:04:00 AM' is not a valid DateTime value.

شكل Tridion يتوقع YYYY-MM-DDThh:mm:ss, لذا لا فضاء ولا المنطقة الزمنية و لا AM/PM علامة.

الرسمية Tridion واجهات برمجة التطبيقات عادة ما محمية من الاضطرار إلى القيام تحويل نفسك, لأنها تقبل DateTime الكائنات وتحويلها إلى الشكل الصحيح بالنسبة لك.ولكن منذ مساعد من الدرجة يمكنك استخدام API الرسمي, يستغرق بضع اختصارات و يجعلك تعيين قيمة string.

أنا عادة استخدام datetime.ToString("u").Replace(" ", "T").Replace("Z", "") الحصول على مواعيد في الشكل الصحيح.

يجب أن يكون لسلسلة التاريخ تنسيق مثل:

  • yyyy-mm-ddthh: mm: ss

مثال:

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

بالإضافة إلى ذلك، تبدو الطريقة التي تحدد فيها التاريخ مجمعا بعض الشيء بالنسبة لي، بالنظر إلى أنك تستخدم المحتوى ومجمع البيانات الوصفية، لماذا لا شيء مثل هذا:

giveacodicetagpre.

وفقا لتجربة C #، يأتي هذا الخطأ بسبب مشكلة تنسيق DateTime. يمكنك تجربة الرمز أدناه

giveacodicetagpre.

لم أختبرها برمزك ولكن آمل أن تعمل في قضيتك.

تفتقد فاصل "T" بين التاريخ والوقت بتنسيقك.لقد ذكرت أن تاريخ الإخراج هو بتنسيق تحاول إعادة إدخاله، ولكن يمكن تنسيق كل ما هو الإخراج على أي حال، وليس بالضرورة الطريقة التي يجب عليك تحديد التاريخ.

لديك قراء قراءة إلى مواصفات DateTime XMLSchema هنا: http:// www.w3.org/tr/xmlschema-2/#datetime

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top