WebService - xsd:Date field



我正在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
}

这似乎正是我想要的!

最新更新