ページをまったくレンダリングせずに AJAX 経由でメソッドを呼び出すにはどうすればよいですか?
-
09-06-2019 - |
質問
私はASP.netを使用しています。
使用しているページの基本クラスに存在するメソッドを呼び出そうとしています。このメソッドを Javascript 経由で呼び出したいので、ASP.net でレンダリングを処理する必要はありません。
これを達成する最も簡単な方法は何でしょうか。
何らかの理由で動作しない PageMethods を調べたところ、他の多くの人が PageMethods で問題を抱えていることがわかりました。
解決
それはメソッドが何に依存しているかによって異なりますが、それが静的メソッドであるか、ページ ライフサイクルに依存せずに動作すると仮定すると、Web サービス エンドポイントを公開し、使用したい Javascript 呼び出しメカニズムを使用してそれにアクセスできます。
他のヒント
Ajax 呼び出しを行うためにどのライブラリを使用していますか?JQuery を使用している場合は、静的メソッドを作成してページ上で呼び出すことができます。さらにサポートが必要な場合はお知らせください。
Thunder3 が示唆しているように、Web サービスを公開します。これを完了すると、Web サービスを ScriptManager (または ScriptManagerProxy) に登録できます。これにより、JavaScript ラッパーが生成されます。このラッパーは、呼び出しへの優れたインターフェイスを提供します。
の指摘をさらに拡張すると、 @アザム, 、ページ上に HTML をレンダリングしたくない場合は、戻り値の型を xml などの別のものに設定し、以下のコードのように response.write を実行できます。GET 中に HTML を送り返したいのですが、POST 中にネットワーク経由で XML を送り返します。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Cache.SetCacheability(HttpCacheability.NoCache)
If Request.HttpMethod = "GET" Then
'do some work and return the rendered html
ElseIf Request.HttpMethod = "POST" Then
'do some work and return xml
Response.ContentType = "text/xml"
Response.Write("<data></data>")
Response.End()
Else
Response.StatusCode = 404
Response.End()
End If
End Sub