我有一个问题要问Asp.Net Master页面。 在母版页和页面加载事件中,我有像
这样的代码protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["UserName"] != null && Session["UserLastName"] != null)
{
lblDisplayName.Text = Session["UserName"].ToString() + " " + Session["UserLastName"].ToString() ;
}
}
}
主页面适用于第1页和第2页。 每当我从第1页重定向到第2页或第2页到第1页时,它都会执行主页面的页面加载。上面的代码每次都会执行。是否无法仅将用户名设置为一次。
有什么可以避免的吗?
谢谢, 马赫什。
答案 0 :(得分:0)
ASP.NET是无状态的,因为HTTP协议是无状态的;因此,第1页中的母版页实例对第2页的请求一无所知。因此,每次页面加载时都必须重新建立标签。
如果您在性能方面询问此问题,我不会担心每次都会设置标签。性能最大的问题往往是:
答案 1 :(得分:0)
HTTP是无状态协议。
从一个页面转移到另一个页面时,您将丢失所有状态信息。实际上,很多网络开发都是在无状态协议中提供一些相似的状态。
我们通过从某个地方提取价值来实现这一目标 - 通过Cookie,或者就像你的情况一样,从会话中提取。
简而言之,当您的页面加载时,它对之前的页面一无所知。因此,您每次都需要检查并设置用户。