Tom*_*ins 3 asp.net events redirect master-pages
我的ASP.NET主页面Page_Init事件页面中有代码,用于检查用户是否有权访问内容页面,如果没有,则将其重定向到登录页面.就检查本身而言,此代码工作正常.但是,我发现在上面的重定向之后,内容Page_Load事件仍然会触发.这会导致在假定用户已登录并设置了某些变量的页面上出现问题.
这是主页面代码(简化)
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
...
If Access_Level > User_Level_ID Then
Response.Redirect("~/login.aspx", False)
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
上面的测试工作正常,并且重定向行被执行,但在下面的代码被触发并执行之前不会生效.
这是内容页面代码
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim Rec_IDs As New List(Of String)
Rec_IDs = Session("Rec_IDs")
lblCount.Text = String.Format("You have {0} records in your cart", CType(Rec_IDs.Count, String)) 'this gives an error if Session("Rec_IDs") is null
End Sub
Run Code Online (Sandbox Code Playgroud)
我意识到我可以在每个内容页面中放置代码来检查用户是否已登录/授权,但我想尽可能从一个位置控制所有内容.
难道我做错了什么?我读了很多页面,说母版页是进行检查的地方.
谢谢.:-)
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
...
If Access_Level > User_Level_ID Then
Response.Redirect("~/login.aspx", True)
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
使用Response.Redirect("〜/ login.aspx",True)将终止当前页面处理并重定向到所需页面.
虽然建议使用"Response.Redirect("〜/ login.aspx",False)"但这不会终止页面执行.它将在当前页面处理结束后重定向.
归档时间: |
|
查看次数: |
16400 次 |
最近记录: |