簡體   English   中英

在內容頁面加載之前重定向母版頁

[英]Redirect in Master Page Before Content Page Load

我的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

上面的測試工作正常,並且重定向行被執行,但在下面的代碼被觸發並執行之前不會生效。

這是內容頁面代碼

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

我意識到我可以在每個內容頁面中放置代碼以檢查用戶是否已登錄/授權,但我想盡可能從一個位置控制所有內容。

難道我做錯了什么? 我讀了很多頁面,說母版頁是進行檢查的地方。

謝謝。 :-)

    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

使用Response.Redirect(“〜/ login.aspx”,True)將終止當前頁面處理並重定向到所需頁面。

雖然建議使用“Response.Redirect(”〜/ login.aspx“,False)”但這不會終止頁面執行。 它將在當前頁面處理結束后重定向。

這樣做是因為Response.Redirect中的第二個參數設置為false - 這意味着您不會結束頁面其余部分的執行。

如果將其設置為true ,則頁面執行結束(阻止內容頁面的Page_Load被觸發。 編輯 :以及此事項的任何其他后續主頁事件)

Response.Redirect("~/login.aspx", True)

檢查它對你所有頁面的作用雖然....例如你的login.aspx頁面不應該像上面代碼的方式一樣擁有相同的母版頁...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM