【问题标题】:Pass value from Content page to Master Page - ASP.NET将值从内容页面传递到母版页 - ASP.NET
【发布时间】:2020-08-14 08:38:27
【问题描述】:

我是编程新手。我正在开发一个 Web 应用程序,其中我使用了两个母版页,一个用于登录的母版页,另一个用于应用程序的其余部分。在登录页面中,如果凭据正确,则会捕获登录详细信息并将其存储在 Session 中,

Session["identity"] = txtLogin.Text;

然后用户被引导到主页。

我想将之前捕获的会话值设置到另一个母版页中的标签框,最终将在所有页面中显示用户的登录ID。当我尝试将其分配给 master.cs 页面中的标签框时,我收到错误消息,“该名称在当前上下文中不存在”。如何解决此问题。

<asp:Label ID="lblusername" class="Label" runat="server" Text=""></asp:Label>

lblusername.text = Session["identity"].ToString();

【问题讨论】:

  • 或者您可以将代码放在母版页的代码隐藏中,并检查Session["identity"] != null
  • @AndrewMorton 我面临的问题是,即使我有带有 id-"lblusername" 的标签框,当我在后面的代码中为其赋值时,它显示名称"lblusername" 不存在当前上下文。
  • 看起来在另一个母版页的代码隐藏中设置文本是要走的路。这样代码只在一个地方。如果将代码放在每个页面中,如果需要更改,必须为每个页面进行编辑会很烦人,并且在创建新页面时很容易忘记添加代码。
  • @AndrewMorton,我试过但同样的错误弹出。母版页中的标签框/文本框不能设置值吗?
  • 绝对有可能。尝试将另一个具有不同 ID 的 asp:Label 添加到母版页,看看是否可以在母版页的代码隐藏中引用它,以防 lblusername 标签以某种方式损坏。

标签: c# asp.net master-pages


【解决方案1】:

当您使用母版页和内容页时,最重要的部分之一是检查事件序列。

    //Content page PreInit event.
    //Master page controls Init event.
    //Content controls Init event.
    //Master page Init event.
    //Content page Init event.
    //Content page Load event.
    //Master page Load event.
    //Master page controls Load event.
    //Content page controls Load event.
    //Content page PreRender event.
    //Master page PreRender event.
    //Master page controls PreRender event.
    //Content page controls PreRender event.
    //Master page controls Unload event.
    //Content page controls Unload event.
    //Master page Unload event.
    //Content page Unload event.

检查事件序列并检查您为会话分配值的事件以及您从会话中获取值的事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多