【问题标题】:How do you access an asp.net code behind session object member variable in javascript?您如何在 javascript 中访问会话对象成员变量后面的 asp.net 代码?
【发布时间】:2012-02-15 19:21:19
【问题描述】:

我有一个类可以处理我的 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 变量的最佳方法是什么?也许我引用它的语法已关闭,或者我以错误的方式进行操作。任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

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

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

    应该够了。

    【讨论】:

    • 我不确定您所说的页面类型是什么意思。 “MySessionClass”不是一个页面,而是一个简单的 MySessionClass.cs 文件。它使用 HttpContext.Current.Session 来访问会话变量
    • +1 页面类型位于您的 .aspx.cs 文件的顶部,f.e. public partial class YourPageType : Page。如果您的 MySessionClass 在不同的文件中,请指定它的命名空间 f.e. &lt;%= MyNamespace.MySessionClass.Current.User.UserID%&gt;
    • 我们是怎么知道的?请发布所有相关代码。从您当前的示例中,我不知道 Current 是您页面上的成员还是这个静态会话类的成员。此外,您是否在 ASPX 页面指令中导入了正确的命名空间?
    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 2011-11-25
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2013-08-16
    • 2017-06-09
    • 1970-01-01
    相关资源
    最近更新 更多