我正在构建一个JSON / WCF应用程序,需要将一组对象发送回服务器。由于某种原因,它不接受阵列。使用脚本管理器,我可以很好地获取数据。
var month = $("#ddlStartMonth").val();
var year = $("#ddlStartYear").val();
var items = JSON.stringify(calendarItems);
WebService.SaveCalendar(items, new Date(year, month, 01).toDateString(), new Date(year, month, 01).toDateString(), Submit, onPageError);
我尝试过使用和不使用JSON stringify。 onPageError函数被激活,它产生的唯一错误信息是“服务器方法'SaveCalendar'失败”。然而,Web方法第一行的断点未激活。
<OperationContract()>
<WebGet(ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.WrappedRequest)>
<WebMethod(EnableSession:=True)>
Public Function SaveCalendar(ByVal _jsonImages As String()(), ByVal _selectedMonth As String, ByVal _selectedYear As String) As Boolean
Dim _calenderItems As New List(Of CalenderItem)
'_calenderItems = New JavaScriptSerializer().Deserialize(Of List(Of CalenderItem))(_jsonImages)
HttpContext.Current.Session("calenderItems") = _calenderItems
HttpContext.Current.Session("selectedMonth") = New Date(_selectedMonth)
HttpContext.Current.Session("selectedYear") = New Date(_selectedYear)
Return True
End Function
任何想法?
答案 0 :(得分:1)
我在使用MVC时遇到了类似的问题。我认为.NET的反序列化器实际上期望它传递的对象将是一个JSON 对象而不是数组(即它应始终以“{”开头并以“你可以:
当然,第二个选项只有在你能够以某种方式说服WCF首先运行该方法时才有效。但是,再看一下你的代码,我想知道你将_jsonImages声明为双字符串数组可能会造成一些困难。