我正在ASP.Net v3.5中为一个客户创建一个Web服务。目前,我们有一个类似于下面的对象,它由一个webservice方法返回:
public class blah
{
public DateTime datetime;
public int someData;
}
现在,客户向我发送了以下请求:
在您的模式中,xsd:dateTime只有一个条目。你能将其分为两个字段,一个用于日期,另一个用于时间。这个xsd:date和xsd:time的使用应该可以作为对象类型。
显然,我可以按如下方式更改类:
public class blah
{
public DateTime date;
public DateTime time;
public int someData;
}
但我认为这实际上会产生两个"xsd:DateTime"字段,而不是他请求的每个字段中的一个。
你能告诉我如何实现客户期望的结果吗?
在.NET中没有Time
对象,这是DateTime
对象的一部分。
我会继续使用两个strings
对象,而不是
public class blah
{
public string date;
public string time;
public int someData;
}
然后将它们解析为DateTime对象,很快就会得到
DateTime dateOut;
if(DateTime.TryParseExact(
string.Format("{0} {1}", date, time),
"yyyy-MM-dd HH:mm",
null,
System.Globalization.DateTimeStyles.None,
out dateOut))
{
// date is valid
}
else
{
// send error back saying that DATE or/and Time needs to follow a pattern
}
要使房产呈现特定类型,您可以使用进行装饰
public class blah
{
[XmlElement(DataType = "Date")]
public string date;
[XmlElement(DataType = "Time")]
public string time;
public int someData;
}
但有些论坛认为.NET在这方面存在一些问题。。。尝试一下,并使用Fiddler来模拟对您的服务的调用。
public class Blah
{
[System.Xml.Serialization.XmlElement(Namespace="http://www.w3.org/2001/XMLSchema", DataType="time")]
public DateTime time;
[System.Xml.Serialization.XmlElement(Namespace="http://www.w3.org/2001/XMLSchema", DataType="time")]
public DateTime date;
public int someData
}
这似乎正是我想要的!