下午好。
我使用ms vwd 2010 express使用以下网页: Site.Master / Site.Master.vb,Login.aspx / Login.aspx.vb
Site.Master具有以下内容:
<div class="loginDisplay">
<asp:Label ID="WelcomeLabel" runat="server" Text=""></asp:Label>
<asp:HyperLink ID="LogHyperlink" navigateurl="~/Account/Login.aspx" runat="server">Log In</asp:HyperLink>
</div>
我在Login.aspx.vb程序中有以下代码:
Dim WelcomeLabel As New Label
WelcomeLabel = CType(Master.FindControl("WelcomeLabel"), Label)
WelcomeLabel.Text = "Welcome " & OLEdr.Item("ho1FirstName")
Dim LogHyperlink As New HyperLink
LogHyperlink = CType(Master.FindControl("LogHyperlink"), HyperLink)
LogHyperlink.Text = "Log Out"
LogHyperlink.NavigateUrl = "Exit.aspx"
当用户成功登录时,LogHyperlink从登录更改为 注销,WelcomeLabel包含文本&#34;欢迎&#34;和人的名字。一切正常。
但是,该代码仅适用于Login.asp页面。当我导航到另一个 页面,说About.aspx(也使用Site.Master),Site.Master 页面返回原始,我丢失了代码所做的更改。
如何在所有会话中保持会话的持续更改 网页?所有网页都使用Site.Master。
谢谢。 TFJ
答案 0 :(得分:0)
查看LoginView控件。看来你正试图准确实现控件的用途。它允许您根据用户是否登录显示不同的信息。
答案 1 :(得分:0)
这是可行的(虽然我不推荐它)。在Login.aspx.vb中添加一行以在会话中保存用户名:
Session("LoggedInUser") = OLEdr.Item("ho1FirstName").ToString()
Dim WelcomeLabel As New Label
WelcomeLabel = CType(Master.FindControl("WelcomeLabel"), Label)
WelcomeLabel.Text = "Welcome " & OLEdr.Item("ho1FirstName")
Dim LogHyperlink As New HyperLink
LogHyperlink = CType(Master.FindControl("LogHyperlink"), HyperLink)
LogHyperlink.Text = "Log Out"
LogHyperlink.NavigateUrl = "Exit.aspx"
在Site.Master.vb中,在Page_Load中加载Session
的用户名:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Session("LoggedInUser") Is Nothing Then
WelcomeLabel.Text = Session("LoggedInUser").ToString()
LogHyperlink.Text = "Log Out"
LogHyperlink.NavigateUrl = "Exit.aspx"
Else
LogHyperlink.Text = "Log In"
LogHyperlink.NavigateUrl = "~/Account/Login.aspx"
WelcomeLabel.Text = ""
End If
End Sub