从子页面 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