SDL*_*per 1 core-services tridion tridion-2011
我使用以下链接的代码来处理元数据字段: -
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数据类型我都得到相同的错误,我还尝试使用Datetime数据类型重载AddValue方法,但到目前为止还没有任何工作.
AddValue方法的代码片段: -
public void AddValue(string value1)
{
string value = string.IsNullOrEmpty(value1) ? null : value1; ;
XmlElement newElement = fields.AddFieldElement(definition);
if (value != null) newElement.InnerText = value;
}
Run Code Online (Sandbox Code Playgroud)
请为Date和Number数据类型建议解决方案.提前致谢
关于您的日期格式错误这一事实的错误信息非常明确: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,因此需要一些快捷方式,并将您设置为a string.
我通常用来datetime.ToString("u").Replace(" ", "T").Replace("Z", "")以正确的格式获取日期.
日期String应具有以下格式:
例:
除此之外,您设置日期的方式对我来说似乎有点复杂,因为您使用的是内容和元数据包装器,为什么不是这样的:
string myStringDate = "2012-10-03T09:39:43";
fields["DateFieldName"].Value = myStringDate;
component.Metadata = fields.ToString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |