将DateTime参数传递给ASP.NET Web Service

时间:2012-10-19 09:51:17

标签: asp.net asmx momentjs

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

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

我的问题是使用AJAX帖子将此日期返回给我的Web服务。我的网络方法看起来像这样:

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

如果我尝试以相同的格式发送日期(/ Date(1350639464100 + 0100)/),那么我收到错误:

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

有没有更好的替代方法将其作为字符串发送然后解析服务器上的值?理想情况下,我希望能够在往返服务器的往返途中发送对象,而无需更改它们可能包含的任何日期属性。

感谢您的帮助!

2 个答案:

答案 0 :(得分:7)

我现在的工作如下。

使用DateTime参数的Web方法:

[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")}

答案 1 :(得分:0)

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

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