Asp.Net - 母版页 - 如何避免不必要的电话

时间:2012-02-15 13:53:34

标签: asp.net

我有一个问题要问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页时,它都会执行主页面的页面加载。上面的代码每次都会执行。是否无法仅将用户名设置为一次。

有什么可以避免的吗?

谢谢, 马赫什。

2 个答案:

答案 0 :(得分:0)

ASP.NET是无状态的,因为HTTP协议是无状态的;因此,第1页中的母版页实例对第2页的请求一无所知。因此,每次页面加载时都必须重新建立标签。

如果您在性能方面询问此问题,我不会担心每次都会设置标签。性能最大的问题往往是:

  1. 大页面尺寸,需要很长时间才能在客户端上下载。
  2. 低效的数据库查询。
  3. 还有其他人,但这是另一个讨论的主题。

答案 1 :(得分:0)

HTTP是无状态协议。

从一个页面转移到另一个页面时,您将丢失所有状态信息。实际上,很多网络开发都是在无状态协议中提供一些相似的状态。

我们通过从某个地方提取价值来实现这一目标 - 通过Cookie,或者就像你的情况一样,从会话中提取。

简而言之,当您的页面加载时,它对之前的页面一无所知。因此,您每次都需要检查并设置用户。