我想与大家分享我今天学到的东西。我的问题是:
您可以将JSON对象从JavaScript代码传递给.NET页面方法吗?例如:
var task = {
Title: $("#titlenew input", $(newTaskRow)).val(),
StartDate: $("#startnew input", $(newTaskRow)).val(),
EndDate: $("#endnew input", $(newTaskRow)).val(),
EstimatedHours: $("#esthrsnew input", $(newTaskRow)).val(),
PredecessorsOutlineNumbers: $("#depnew input", $(newTaskRow)).val(),
OutlineNumber: $("#ordernew", $(newTaskRow)).text()
};
PageMethods.AddTask(task, saveNewTaskCompleted, saveNewTaskFailed);
如果可以,我的Web方法应该接受哪种类型的.NET对象?
我发现是的,你可以将一个JSON对象传递给一个Page方法,它就是一个Dictionary(Of String,String)。所以我的网络方法签名如下所示:
<System.Web.Services.WebMethod()> _
Public Shared Sub AddTask(ByVal taskJson As Dictionary(Of String, String))
Dim oTask As New Task()
oTask.Title = taskJson("Title")
' all other accesses to the JSON object here
End Sub
答案 0 :(得分:4)
查看这篇文章: http://dotnetslackers.com/columns/ajax/ASPNETAjaxWebService.aspx
使用[GenerateScriptType(typeof(Task))装饰您的WebMethod]然后在客户端,您将能够创建任务。然后将它作为常规对象传递给服务器端方法。
答案 1 :(得分:0)
类似问题的详细解答表明结合JQuery和amp; Json2.stringfy()可用于将复杂类型发送到服务器端方法。
在服务器端,您只需要将所需的Type放入Method Signature
(例如foo(MyType obj){...})
How to send JSON object to asp.net web service and process the data there?