如何访问javascript中的asp.net代码隐藏会话对象成员变量

How do you access an asp.net code behind session object member variable in javascript?

本文关键字:隐藏 代码 net 会话 对象 变量 成员 asp 中的 何访问 访问      更新时间:2023-09-26

我有一个类可以处理asp.net应用程序中的所有会话变量。此外,我有时会将对象存储在会话变量中,以便能够编写与普通.net应用程序非常相似的代码。

例如,这里有一个会话变量中的对象:

public cUser User
{
    get { return (cUser)HttpContext.Current.Session["CurrentUser"]; }
    set { HttpContext.Current.Session["CurrentUser"] = value; }
}

下面是MySessionClass:的实例

    public static MySessinClass Current
    {
        get
        {
            MySessionClass session = (MySessionClass)HttpContext.Current.Session["MySessionClass"];
            if (session == null) {
                session = new MySessionClass();
                HttpContext.Current.Session["MySessionClass"] = session;
            }
            return session;
        }
    }

所以,在我的代码隐藏aspx页面中,我只需要做一些事情,比如

int userID = MySessionClass.Current.User.UserID;

这很好用,我很喜欢。但是,我想在aspx页面的javascript中应用相同的原理:

var userID = <%=MySessionClass.Current.User.UserID%>;

然而,当我访问该网页时,我收到一个错误,说它无法识别MySessionClass对象。

那么,考虑到我所处的上下文,在javascript中从对象、会话引用UserID变量的最佳方式是什么?也许我引用它的语法不正确,或者我走错了路。任何帮助都将不胜感激,谢谢。

由于您已将其定义为静态成员,因此您需要使用页面类型限定引用:

var userID = <%=MyPageType.MySessionClass.Current.User.UserID%>; 

这就足够了。