2

レコードの ID 番号に基づいてデータベースからデータを生成する select ステートメントの where 句のパラメーターとして使用できるように、Web サービスを使用して URL から ID 番号を抽出しようとしています。そのデータはページに戻され、jQuery モーダル ポップアップ ウィンドウの要素に入力されます。

すべてが静的 ID 番号 (例: string postid = "120") で正常に動作しますが、URL から ID 番号を取得する方法がわかりません。Routing in .Net 4 を使用していますが、Routing in pages にアクセスする方法が Web サービスでは機能しません。ページでは、次のようなvar id = RouteData.Values["id"];ことをしてIDを取得しますが、Webサービスでそれを行うとエラーが発生しました:

CS0120: 非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です'System.Web.Routing.RouteData.Values.get'

概要:

RouteDataリクエストを行っているページを取得したい詳細ページからWebサービスにアクセスしました。私はこれをページ上でできる限り簡単に行いたいと思っていRouteData.ValuesますRequest.Querystring.


Web サービスの新しいルートを簡単に追加できますが、webservice.asmx/webmethod 構文のために jQuery Ajax を使用してそれを呼び出すかどうかわからないため、さらに混乱しています。

現在、jQuery Ajax に "../webservices/googlemaps.asmx/GetGoogleMap" という URL がありますが、これは実際の URL ではありません。それはjQueryのどこかにしか存在せず、JavaScriptだけを使用してサービスを呼び出す方法も実際のURLではありませwebservice.webmethod()ん。この場合はgooglemaps.GetGoogleMap().

のルートを登録してみますがwebservices/googlemaps.asmx/GetGoogleMap/postidGetGoogleMapはディレクトリでもquerystring.

4

1 に答える 1

7

現在の http リクエストを取得し、 RequestContextプロパティを使用してリクエスト コンテキストを取得します。現在のルーティング データがあります。例えば、

var id = HttpContext.Current.Request.RequestContext.RouteData.Values["id"];

WCF ベースの Web サービスの場合、サービスが ASP.NET パイプラインに参加していることを確認してください ( ASP.NET の互換性を参照してください) 。

編集:誤解を招く回答で申し訳ありません-ルーティングエンジンにWebサービスのURLが登録されていない限り、上記は機能しません。ただし、ID を取得するという問題は解決しない場合があります。使用しているサービスの実装の種類は何ですか? GET リクエストまたは POST リクエストを行っていますか? 通常、Web サービス ハンドラー (asmx) または WCF パイプラインは、GET/POST パラメーターをメソッド パラメーターに変換する必要があります。Web サービス コードとその呼び出し方法を投稿してください。

于 2011-09-22T08:42:17.523 に答える