ASP.NET:将数据从内容页面传递到母版页并保留它

时间:2016-06-10 16:59:25

标签: c# asp.net

所以我有一个内容页面aspx&amp; aspx.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;  
    }  

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

由于

1 个答案:

答案 0 :(得分:1)

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

要解决此问题,在propertys setter中,您需要将值保留在特定于用户的位置。全局会话可能是一个好地方 - 或用户Cookie。然后在propertys getter中,您需要从您使用的存储中读取。

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

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