我有一个Web应用程序(.NET 3.5),在Global.asax中包含此代码:
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回调?
非常感谢您的任何反馈。
答案 0 :(得分:1)
约翰,
感谢您指点我正确的方向。解决方案实际上是检查Request.Form(“__ ASYNCPOST”)。如果是CallBack,则设置为“true”。
非常感谢你的帮助!
答案 1 :(得分:1)
您应该有权访问HttpContext.Current.Handler对象,您可以将该对象强制转换为Page对象并获取Page.IsPostBack或Page.IsCallBack。虽然为了安全地执行此操作,您需要首先测试它是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
答案 2 :(得分:0)
根据我的理解,IsCallback所做的就是检查表单是否有一个名为__CALLBACKARGUMENT的post变量。您可以在Context.Request.Form中自己检查表单,这应该告诉您与IsCallback相同的事情。