【问题标题】:ASP.NET: Passing data from content page to master page and keep it [duplicate]ASP.NET:将数据从内容页面传递到母版页并保留它[重复]
【发布时间】:2016-06-11 01:15:26
【问题描述】:

所以我有一个内容页面aspxaspx.cs,我将这一行<%@ MasterType virtualPath="~/MasterPage.master"%> 添加到aspx,这样我就可以将我的数据从aspx.cs 传递给我的master page。它可以工作,但是一旦我单击以移动到另一个页面或刷新页面,我传递的数据就消失了,并且该值返回到该字段在我传递任何内容之前的原始默认值。在我写的母版页中:

public string PassLogedUser  
    {  
        get { return this.LogedUser.Text; }  
        set { this.LogedUser.Text = value; }  
    }  

protected void Page_Load(object sender, EventArgs e)  
    {  
        LogedUser.Text = PassLogedUser;  
    }  

当我在浏览器中导航到另一个页面甚至刷新页面时,我如何保留传递的数据?

谢谢

【问题讨论】:

  • 您可以使用 Session 保存同一用户在页面之间可用的数据。您也可以将其存储在 cookie 或数据库中。
  • 谢谢,你能告诉我怎么做吗?如何使用会话或将我引导到带有解释的链接?
  • 这是非常基本的东西,网上有很多关于在 ASP.NET Web 窗体中的页面之间持久化数据的信息。谷歌将是一个好的开始。
  • msdn.microsoft.com/en-us/library/ms178581.aspx - 要实现的是,数据作为对象存储在会话中,当您从会话中检索数据时,必须将其转换为您需要的类型。
  • 谢谢大家,我现在就结束这个问题:)

标签: c# asp.net


【解决方案1】:

所有页面都是无状态的。属性仅在页面呈现时有效,一旦响应返回给用户,页面状态就消失了。

要解决这个问题,您需要在属性设置器中将值保存在用户特定的位置。全局 Session 可能是一个好地方——或者是一个用户 Cookie。然后在属性 getter 中,您需要从您使用的存储中读取。

public string PassLogedUser 
{ 
    get 
    { 
        return Session("PassLogedUser") ?? "anonymous";
    } 
    set 
    {
        Session("PassLogedUser", value);
    } 
} 

然后在母版页预渲染事件中需要设置LogedUser.Text = PassLogedUser;

【讨论】:

  • 你能帮我一些代码示例吗?你刚才说的我都不知道怎么做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
相关资源
最近更新 更多