2012-10-19 79 views
2

是否可以将DateTime参数发布到ASMX Web服务中的Web方法(使用JSON序列化的RPC样式调用)?将DateTime参数传递给ASP.NET Web服务

我正在向浏览器发送一个DateTime,并以/ Date(1350639464100 + 0100)/格式进行序列化。然后,我可以使用优秀的moment.js库来解析日期,并将其显示在页面上。

我的问题是将此日期返回给服务器,并使用AJAX发布到我的Web服务。我的Web方法看起来是这样的:

[WebMethod(EnableSession = true)] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void Save(DateTime date) 
{ 
    // Do stuff 
} 

如果我尝试在相同的格式发送日期作为它下来(/日期(1350639464100 + 0100)/)然后我得到一个错误:

/日期(1350639464100 + 0100)/不是DateTime的有效值。

有没有更好的选择将它作为字符串发送,然后解析服务器上的值?理想情况下,我希望能够往返于服务器往返发送对象,而不必更改它们可能包含的任何日期属性。

感谢您的帮助!

回答

0

您可以更改参数类型为字符串,然后你可以说字符串转换成任何类型的你想要

public void Save(String date){ 
    *Code* 
    } 
+0

这是一个合理的回退选项,但我宁愿使用直接使用DateTime参数,因为它可以将对象传入和传出服务器,而无需在发送任何属性之前更改任何属性。 –

+0

您必须将客户端的日期(1350639464100 + 0100)转换为服务器可接受的日期格式,例如:dd/mm/yyyy或mm/dd/yyyy。尝试发送该格式的字符串...服务器将它识别为日期 –

+0

感谢您的帮助Otto,将日期作为字符串发送(但仍使用DateTime参数类型)效果很好。在你提出这个建议之前,我还没有想过这样做,我担心这种方法的本地化。似乎以通用格式发送日期(例如2012-10-19)是安全的。 –

7

我这有现在的工作如下。

[WebMethod(EnableSession = true)] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void Save(DateTime date) 
{ 
    // Do stuff 
} 

AJAX发布到网络方式发送日期为字符串(在国际格式,以避免本地化问题):使用日期时间参数

Web方法

{"date": "2012-10-19"} 

,或者使用moment.js

{"date": moment().format("YYYY-MM-DD HH:mm:ss")} 
+0

它也在Postman中工作,没有用引号封装 –