将JSON对象传递给Web方法

时间:2009-04-10 19:27:50

标签: asp.net javascript ajax json asp.net-ajax

我想与大家分享我今天学到的东西。我的问题是:

您可以将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

2 个答案:

答案 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?

相关问题