Tôi có một webservice với một phương thức được gọi thông qua đối tượng xmlhttprequest trong javascript của tôi. Phương thức này chấp nhận một tham số datetime mà sau đó được chuyển đổi thành một chuỗi và chạy với cơ sở dữ liệu để thực hiện một phép tính.Định dạng ngày giờ đúng cho dịch vụ web
tôi nhận được giá trị từ m_txtDateAdd và gửi ra khỏi XMLHttpRequest
<asp:textbox id=m_txtDateAdd tabIndex=4 runat="server" Width="96px" Text="<%# Today %>">
</asp:textbox>
trong đó có một validator attacted để nó
<asp:CustomValidator id="m_DateAddValidator" runat="server" ErrorMessage="Please Enter a Valid Date" ControlToValidate="m_txtDateAdd">●</asp:CustomValidator>
WebMethod của tôi trông giống như sau
[WebMethod]
public decimal GetTotalCost(DateTime transactionDate)
{
String sqlDateString = transactionDate.Year+"/"+transactionDate.Month+"/"+transactionDate.Day;
tôi sử dụng sqlDateString như một phần của văn bản lệnh tôi gửi đến cơ sở dữ liệu. Một ứng dụng kế thừa của nó và sql nội tuyến của nó vì vậy tôi không có quyền tự do thiết lập một thủ tục được lưu trữ và tạo và gán các tham số trong mã của tôi phía sau. Điều này làm việc 90% thời gian. Webservice được gọi trên sự kiện onchange của m_txtDateAdd. Hiện tại, tôi nhận được phản hồi từ máy chủ là
System.ArgumentException: Không thể chuyển đổi 25/06/2009 thành System.DateTime. System.ArgumentException: Không thể chuyển đổi 25/06/2009 thành System.DateTime.
Tên thông số: loại ---> System.FormatException: Chuỗi không được nhận dạng là Ngày giờ hợp lệ.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.DateTime.Parse(String s, IFormatProvider provider)
at System.Convert.ToDateTime(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToDateTime(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
Bạn có thể hiển thị mã trình xác thực tùy chỉnh không? Bộ nối tiếp sẽ cố gắng chuyển đổi chuỗi của bạn bằng định dạng mặc định mà chỉ có thể hiểu một vài định dạng cơ bản. Trình xác thực phải đảm bảo rằng định dạng đã biết đang được gửi. –
Trình kiểm tra tùy chỉnh asp.net tiêu chuẩn của nó. Tôi chưa viết cho riêng mình – user48408