【问题标题】:how can I access Session in preinit function in asp.net?如何在 asp.net 的 preinit 函数中访问 Session?
【发布时间】:2015-07-26 20:19:16
【问题描述】:
 void Page_PreInit(Object sender, EventArgs e)
{
    HttpCookie userInfo;
    userInfo = Request.Cookies["userInfo"];
    Session["EmpID"] = userInfo["EmpID"];
    Session["GroupID"] = userInfo["GroupID"];
    Session["DeptID"] = userInfo["DeptID"];
    Session["SecID"] = userInfo["SecID"];

    if (Session["GroupID"] =="1")
    {
        this.MasterPageFile = "master/hr_dept.Master";
    }
    else if (Session["GroupID"] == "2")
    {
        this.MasterPageFile = "master/hr_dept.Master";
    }
    else if (Session["GroupID"] == "3")
    {
        this.MasterPageFile = "master/hod_dept.Master";
    }
    else if (Session["GroupID"] == "4")
    {
        this.MasterPageFile = "master/default2_dept.Master";
    }
    else
    {
        this.MasterPageFile = "master/site.Master";
    }
}

我想检查我的会话值,然后根据它加载母版页,我在不同的页面上使用相同的母版页。

【问题讨论】:

  • 在 null(不存在的 cookie)的情况下使用string mything = String.IsNullOrEmpty(Session["mything"]) ? "defaultvalue" : Session["mything"]; 中的默认值可能会更好,然后在您的条件中使用该变量。

标签: c# asp.net


【解决方案1】:

允许你的类实现IRequiresSessionState 如:

public partial class YOUR_ASPX: System.Web.UI.Page , IRequiresSessionState
{
 // your preinit code

}

这是一个标志接口,意味着不需要实现任何东西,但允许您访问会话。

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2014-02-27
    • 2012-08-12
    • 2016-10-13
    相关资源
    最近更新 更多