我有以下全局变量:

private ArrayList listSelectedUnavailables
    {
        get
        {
            return (ArrayList)ViewState["listSelectedUnavailables"];
        }
        set
        {
            ViewState["listSelectedUnavailables"] = value;
        }
    }


我可以在网络表单的每个过程中使用它。

但是,我需要在同一个WebForm中使用的WebMethod中使用它,但似乎无法识别任何全局变量。所以:

如何从WebMethod访问全局变量?

最佳答案

ViewState属性取决于使页面(.aspx)回发视图状态,即存储“变量”的位置。 WebMethod不包括整页回发(如果有回发的话),因此没有可读取的视图状态。相反,您可能想要使用会话变量,例如:

    private ArrayList listSelectedUnavailables
    {
        get
        {
            return (ArrayList)Session["listSelectedUnavailables"];
        }
        set
        {
            Session["listSelectedUnavailables"] = value;
        }
    }


会话将变量存储在Web服务器的内存中(但与特定的浏览器会话有关)。这有其自身的缺点,例如易变至工作进程重置,负载平衡方面。

10-02 01:26
查看更多