2

Global.asax に次のコードを持つ Web アプリケーション (.NET 3.5) があります。

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    LinkLoader()
    PathRewriter()
    PathAppender()
End Sub

AJAXコールバックの場合を除いて、内部のすべての関数が呼び出されるようにします。したがって、理想的には、次のように変更します。

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    If not Page.IsCallback then
        LinkLoader()
        PathRewriter()
        PathAppender()
    End If
End Sub

ただし、ここではページ オブジェクトへのアクセスはありません。したがって、基本的に私の質問は次のとおりです。

リクエストが Application_BeginRequest 内の AJAX コールバックであるかどうかを確認するにはどうすればよいですか?

フィードバックをお寄せいただきありがとうございます。

4

3 に答える 3

1

Page オブジェクトにキャストして Page.IsPostBack または Page.IsCallBack を取得できる HttpContext.Current.Handler オブジェクトにアクセスできる必要があります。これを安全に行うには、最初にそれが Page オブジェクトであり、null ではないことをテストする必要があります。

With HttpContext.Current
   If TypeOf .Handler Is Page Then
      Dim page As Page = CType(.Handler, Page)
      If page IsNot Nothing AndAlso (page.IsCallBack OrElse page.IsPostBack) Then
         'Do something
      End If
   End If
End With
于 2009-12-18T18:45:47.460 に答える
0

私の理解では、IsCallbackが行うのは、フォームに__CALLBACKARGUMENTという名前の投稿変数があるかどうかを確認することだけです。Context.Request.Formでフォームを自分で確認できます。これにより、IsCallbackと同じことがわかります。

于 2009-07-10T17:35:04.053 に答える