我有一个类来处理我的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变量的最佳方法是什么?也许我引用它的语法是关闭的,或者我的方法是错误的。任何帮助将不胜感激,谢谢。
答案 0 :(得分:3)
由于您已将其定义为静态成员,因此您需要使用页面类型限定您的引用:
var userID = <%=MyPageType.MySessionClass.Current.User.UserID%>;
这应该足够了。