2010-02-22 47 views
1

我想将一个JavaScript创建的对象发送到一个ASP.NET PageMethod。此对象镜像现有自定义业务对象的属性,所以我希望我可以传递一个对象而不是每个属性的参数。尝试使用这种方法的时候,我得到一个错误“未知的Web方法SavePart发送一个复杂的对象作为参数到Asp.Net PageMethod

的Javascript:

function() { 
    var pt = { Id: 1, Onhand: 20, LowPoint: 30, __type: 'Custom.Objects.Part'}; 

    $.ajax({ 
     type: 'POST', 
     url: 'partlist.aspx/SavePart', 
     data: JSON.stringify(pt), 
     contentType: 'application/json; charset: utf-8;' 
     dataType: 'json', 
     success: function(results) { alert('Success!'); } 
    }); 
} 

代码背后:

<WebMethod()> _ 
Public Shared Function SavePart(pt as Custom.Objects.Part) as Boolean 
    Dim repo as new PartRepository() 
    return repo.Save(pt) 
End Function 

我使用另一个PageMethod的刚刚接受一个int ,并且这个工作正常。

回答

2

我最终通过了jQuery AJAX命令发送对象这样解决我的问题:

data: '{"pt":' + JSON.stringify(pt) + '}' 

这种自动序列化的对象,并将其返回给我的WebMethod。当我尝试发送对象时,出现错误,提示“无效的JSON基元”。

+0

啊......这实际上是有道理的。只是发送pt可能会导致解串器尝试将对象的每个属性作为单独的参数传递给webmethod。 –

相关问题