2011-11-16 67 views
4

我有一個Web方法:PageMethods在ASP.NET無法工作,如果你有ASP.NET路由實現

[System.Web.Services.WebMethod] 
public static string getCharacterstics(int product_id, int lang_id) 
{ 
    // code goes here... 
} 

我想用PageMethods喜歡訪問: (前提是我必須啓用條件在ScriptManager的PageMethods):

<script type="text/javascript"> 
    $(document).ready(
     function() { 
      $('#characterstics').html("loading"); 
      // '<%= product_id_property %>' , '<%= this.LanguageID %>' 
      PageMethods.getCharacterstics(0 ,0 , OnSave); 
     } 
    ); 

    function OnSave(result) { 
    } 
</script> 

我得到錯誤「的HTTP動詞後訪問路徑..是不允許的」

我GOOGLE了它和搜索也是如此,但確實不是G et關於它的任何解決方案基於ASP.NET路由。

我相信是因爲asp.net路由服務方法不可訪問。

另外我想我甚至不能使用JSON,因爲asp.net路由也是如此。

任何幫助表示讚賞。

更新時間:

如果我運行這個網址的頁面:

http://localhost:2606/searchdetail.aspx 

成功執行Web方法。

現在

我有路由這樣的:

 routes.MapPageRoute("searchdetail", "searchdetail/{ID}", "~/searchdetail.aspx"); 
     routes.MapPageRoute("searchdetail", "searchdetail", "~/searchdetail.aspx"); 

的set_path()只會工作的情況下,2即沒有ID,但如果我嘗試

不符合的情況下1

工作

http://localhost:2606/searchdetail 

它正常工作

,但如果我嘗試使用:

http://localhost:2606/searchdetail/123 

它給出了預期的對象錯誤。

所以set_path()是我應該寫的選項。

回答

11

目前,WebMethods不能透明地處理Routing框架。有一個工作。您必須通過在javascript中執行以下操作直接訪問PageMethods:

PageMethods.set_path('/the/path/to/your/page.aspx'); 
PageMethods.YourMethod(params, onSuccess, onFailure); 

我希望這有助於。

+0

我嘗試使用set_path,但它不起作用。我也更新了我的問題 – Moons

+0

感謝Neha我完成了。其實我正在使用js引用:而不是。這就是爲什麼你的查詢一開始並不適合我。我用小提琴手來找出問題 – Moons

2

我一直在遇到這個問題。啓用路由後,如果我向路徑添加了一個值,它將再次失敗。這個解決方案有點破解,但它似乎一直工作。

創建在導航網址是指本身就是一個服務器控件的超鏈接,那麼一旦控件呈現,搶href和使用它的set_path

這得到周圍set_path的不是指如果你正確的位置問題稱爲

<asp:HyperLink ID="hlPage" runat="server" NavigateUrl="~/user.aspx" ClientIDMode="Static"></asp:HyperLink> 

<script> 
$(document).ready(function() {PageMethods.set_path($('#hlPage').attr('href'));}) 
</script>