2011-11-16 11 views
4

を実装している場合は動作しませんでした:PageMethodsを使用すると、ASP.NETルーティングは、私は、Webメソッドを持っている

[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で検索し、SOあまりにも検索したがんではないグラムそれに関するすべての解決策ASP.NETルーティングに基づいています。

私が信じているのは、asp.netルーティングのためにサービスメソッドにアクセスできないということです。

さらに、asp.netルーティングのためにJSONを使用することさえできないと思います。

何か助けていただければ幸いです。

更新:

私はこのURLでページを実行する場合:

http://localhost:2606/searchdetail.aspx 

正常に実行されたWebメソッド。今

私はこのようにルーティングしている:IDなしで、すなわち唯一のケース2のために動作しますが、私は

をしようとした場合ケース1

では動作しません)(

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

set_pathを

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リファレンスを使用しています。 1.min.js "type =" text/javascript ">。あなたの質問が私のために最初からうまくいかない理由私は、問題を見つけるためにフィドラーを使用する – Moons

2

私はこれを自分自身に実行し続けた。ルーティングを有効にすると、パスに値を追加すると、再び失敗するようになります。このソリューションは少しハックですが、一貫して動作しているようです。

コントロールのレンダリングたら、その後、HREFを取得し、これがあなたの場合は、正しい場所に言及していないset_pathの問題になりますset_path

のためにそれを使用して、ナビゲートURLが自身を参照サーバーコントロールのハイパーリンクを作成します。

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

<script> 
$(document).ready(function() {PageMethods.set_path($('#hlPage').attr('href'));}) 
</script> 
関連する問題