2012-10-19 110 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中工作,沒有用引號封裝 –