所以我有一个内容页面aspx
& 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;
}
当我在浏览器中导航到另一个页面时,或者当我刷新页面时,如何保留我传递的数据?
由于
答案 0 :(得分:1)
所有页面都是无状态的。属性仅在呈现页面时生效,一旦响应返回给用户,页面状态就消失了。
要解决此问题,在propertys setter中,您需要将值保留在特定于用户的位置。全局会话可能是一个好地方 - 或用户Cookie。然后在propertys getter中,您需要从您使用的存储中读取。
public string PassLogedUser
{
get
{
return Session("PassLogedUser") ?? "anonymous";
}
set
{
Session("PassLogedUser", value);
}
}
然后在母版页预渲染事件中,您需要设置LogedUser.Text = PassLogedUser;