2016-06-10 55 views
0

所以我有一个内容页aspx & aspx.cs,我添加到ASPX此行<%@ MasterType virtualPath="~/MasterPage.master"%>,所以我可以从我的aspx.cs数据传递给我的master page。它可以工作,但是一旦我点击移动到另一个页面或刷新页面,我传递的数据就消失了,并且值返回到字段在传递任何东西之前的原始默认值。在母版页我写道:ASP.NET:从内容页传递数据掌握页,并保持它

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

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

我怎样才能保持我的数据传递,当我在浏览器中浏览到另一个页面,甚至当我刷新页面?

感谢

+0

您可以使用session来保存,可用于从页面相同的用户页面的数据。您也可以将其存储在cookie中或数据库中。 – 2016-06-10 17:13:50

+0

谢谢,你能告诉我该怎么做吗?如何使用会话或直接给我一个解释链接? – nirh1989

+0

这是非常基本的东西,并且有很多关于在ASP.NET Web窗体中页面间持久数据的在线信息。谷歌将是一个好的开始。 – DVK

回答

1

所有页面是无状态的。属性只在呈现页面时存在,并且一旦响应返回给用户,页面状态消失。

为了解决这个问题,在属性设置器中,您需要将值保存在用户特定的位置。全球会议可能是一个好地方 - 或用户Cookie。然后在属性getter中,您需要从您使用的存储中读取数据。

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

然后在主网页预渲染事件中,你需要设置LogedUser.Text = PassLogedUser;

+0

你能帮我一些代码示例吗?我不会如何去做你刚刚说的 – nirh1989