global.asax文件中的会话对象



我正在使用Web应用程序,我希望当用户登录用户ID时,应将其存储在会话中。我知道如何创建会话。

Session["UserID"] = myvalue;

,但我希望将其用于每个页面。因此,我不想在每个页面上编写代码或检查会话可用性。global.asax文件会帮助我吗?

如果我在Session_Start()中写入会话,那么在所有页面上都可以访问吗?如果返回到登录页面。

只需要适当的指导。谢谢

我曾经作为单独的类写入会话并将其作为属性返回。我可以在班上写所有条件。

我强烈建议创建一个基本ePage,但登录以外的每个页面都继承了。这样,您仅在一个页面上创建会话变量代码,但是该代码可以通过继承它的任何页面访问。

用小示例编辑:

当您的用户身份验证时,您需要设置会话变量

当前您的页面可能看起来像这样:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

您需要做的是创建一个单独的类文件,例如basepage.cs,例如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
    public class basepage : System.Web.UI.Page
    {
        protected int GetItem()
        {
            return Convert.ToInt32(Session["myvalue"]);
        }
    }
}

然后您的原始页面看起来更像:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
    public partial class _Default : basepage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            int whatINeed = GetItem();
        }
    }
}

如您所见,而不是继承System.Web.UI.Page的页面,它正在继承基础e(又继承System.Web.UI.Page)。

最新更新