从子页面 asp.net(vb) 更新 master.page 的徽标图像
Update Logo image of master.page from child page asp.net(vb)
我正在使用母版页创建子页。我在母版页的页眉部分有徽标、公司名称。我需要在登录页面后显示在下一页(母版的子页面)中。下一页将显示登录用户的徽标和公司名称。我将徽标路径和公司名称从子页面传递给母版。标签做得很好,但无法显示徽标。你能告诉我如何解决这个问题吗?
这是我的 master.aspx
<asp:Label ID="lblcmpname" runat="server" Text=""></asp:Label>
<asp:Image ID="imglogo" runat="server" />
和master.vb
Public Sub SetImageUrl(ByVal url As String)
imglogo.ImageUrl = url
End Sub
child.aspx
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/master.Master" CodeBehind="child.aspx.vb" Inherits="project.child" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>
child.vb
Dim companyname As String = DirectCast(Session("companyname "), String)
Dim logopath As String = DirectCast(Session("~logos/Logo.jpg"), String)
Dim lblcmpname As Label = TryCast(Me.Master.FindControl("lblcmpname"), Label)
lblcmpname.Text = cmpname
Dim myImage As Image = CType(Master.FindControl("imglogo"), Image)
If Not myImage Is Nothing Then
myImage.ImageUrl = logopath
End If
这里是logo的展示。
logo display
为什么不直接使用母版页的页面加载事件,并让它检查会话。
当您导航到新的子页面时,总是会触发母版页加载事件。因此,在您登录后,如果可以,则为正确的徽标设置会话。
现在,在 master 的页面加载事件中,您可以检查是否没有会话,并使用您的登录徽标(或没有徽标),
因此,您可以将其放入 site.master 页面加载事件中:
If Session("companyname") Is Nothing Then
lblcmpname.Text = "Not yet logged on"
Else
lblcmpname.Text = Session("companyname")
End If
If Session("MyLogo") Is Nothing Then
imglogo.ImageUrl = "~/Content/MyDefault.ppg"
Else
imglogo.ImageUrl = Session("MyLogo")
End If
所以,现在登录后,您可以去:
Session("companyname") = "The correct company name goes here"
Session("MyLogo") = "path to correct logo goes here
' now navigate to Default.aspx, or whatever page with a master page.
所以,我假设没有公司名称的 Session(),也没有 Session("MyLogo"),那么 master 的页面加载代码可以处理这个问题。
因此,当您登录时,您将正确的公司名称设置到 session("compname") 中,并将正确的路径设置到 session("MyLogo") 中。
如果会话未设置(当他们尚未登录时就是这种情况),则在主页面加载中测试会话值是否可以插入默认公司名称(或“”)或其他任何内容。
因此,请记住,当您导航到任何附加有母版页的页面时,母版页加载事件会触发。 T
我正在使用母版页创建子页。我在母版页的页眉部分有徽标、公司名称。我需要在登录页面后显示在下一页(母版的子页面)中。下一页将显示登录用户的徽标和公司名称。我将徽标路径和公司名称从子页面传递给母版。标签做得很好,但无法显示徽标。你能告诉我如何解决这个问题吗?
这是我的 master.aspx
<asp:Label ID="lblcmpname" runat="server" Text=""></asp:Label>
<asp:Image ID="imglogo" runat="server" />
和master.vb
Public Sub SetImageUrl(ByVal url As String)
imglogo.ImageUrl = url
End Sub
child.aspx
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/master.Master" CodeBehind="child.aspx.vb" Inherits="project.child" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
</asp:Content>
child.vb
Dim companyname As String = DirectCast(Session("companyname "), String)
Dim logopath As String = DirectCast(Session("~logos/Logo.jpg"), String)
Dim lblcmpname As Label = TryCast(Me.Master.FindControl("lblcmpname"), Label)
lblcmpname.Text = cmpname
Dim myImage As Image = CType(Master.FindControl("imglogo"), Image)
If Not myImage Is Nothing Then
myImage.ImageUrl = logopath
End If
这里是logo的展示。
logo display
为什么不直接使用母版页的页面加载事件,并让它检查会话。
当您导航到新的子页面时,总是会触发母版页加载事件。因此,在您登录后,如果可以,则为正确的徽标设置会话。
现在,在 master 的页面加载事件中,您可以检查是否没有会话,并使用您的登录徽标(或没有徽标),
因此,您可以将其放入 site.master 页面加载事件中:
If Session("companyname") Is Nothing Then
lblcmpname.Text = "Not yet logged on"
Else
lblcmpname.Text = Session("companyname")
End If
If Session("MyLogo") Is Nothing Then
imglogo.ImageUrl = "~/Content/MyDefault.ppg"
Else
imglogo.ImageUrl = Session("MyLogo")
End If
所以,现在登录后,您可以去:
Session("companyname") = "The correct company name goes here"
Session("MyLogo") = "path to correct logo goes here
' now navigate to Default.aspx, or whatever page with a master page.
所以,我假设没有公司名称的 Session(),也没有 Session("MyLogo"),那么 master 的页面加载代码可以处理这个问题。
因此,当您登录时,您将正确的公司名称设置到 session("compname") 中,并将正确的路径设置到 session("MyLogo") 中。
如果会话未设置(当他们尚未登录时就是这种情况),则在主页面加载中测试会话值是否可以插入默认公司名称(或“”)或其他任何内容。
因此,请记住,当您导航到任何附加有母版页的页面时,母版页加载事件会触发。 T