如何在asp.net中的同一个类的其他方法中访问页面加载方法

时间:2017-04-07 11:20:55

标签: c# asp.net

我在页面加载中有一个方法:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        IEnumerable<int> Ids = GetIds();

    }
}
public IEnumerable<int> GetIds()
{
    IEnumerable<int> Ids;
    using ()
    {
        //query to get data from back end
    }
    return Ids;
}

如何在同一类的其他方法中使用页面加载 ID 列表?是否可以?

实际上我试图在页面加载时立即加载后端的所有数据,然后在同一类的不同方法中使用它们。

2 个答案:

答案 0 :(得分:2)

在类中声明它为全局变量。

IEnumerable<int> Ids;
protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                 Ids = GetIds();

             }
    }
 public IEnumerable<int> GetIds()
   {
        IEnumerable<int> IdsToReturn;
        using ()
        {
               //Here you can get Ids;  
               //query to get data from back end
        }
        return IdsToReturn;
    }

答案 1 :(得分:1)

如果你只是使用一个变量来存储ID值,它将不会被持久化,并且在下一个回发中将为null。

您可以使用ViewState在回发中保留数据,例如:

private List<int> IDs
{
    get{ return (List<int>)ViewState["IDs"]; }
    set{ ViewState["IDs"] = value; }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        IDs = GetIds();
        //IDs will be available in the next postbacks
    }
}