2010-02-22 46 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。 –

相關問題