C# 如何在asp.net中访问同一类的其他方法中的页面加载方法
我在页面加载中有一个方法:C# 如何在asp.net中访问同一类的其他方法中的页面加载方法,c#,asp.net,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 () {
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;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!IsPostBack)
{
IEnumerable id=GetIds();
}
}
公共IEnumerable getId()
{
IEnumerable ID;
使用()
{
//查询以从后端获取数据
}
返回ID;
}
如何在同一类的其他方法中使用页面加载Ids列表?是否可能
实际上,我试图在页面加载时一次加载后端的所有数据,然后在同一类的不同方法中使用它们。在类中将其声明为全局变量
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;
}
IEnumerable ID;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
Ids=GetIds();
}
}
公共IEnumerable getId()
{
i可数IdsToReturn;
使用()
{
//在这里你可以得到身份证;
//查询以从后端获取数据
}
返回IdsToReturn;
}
如果您只是使用变量来存储IDs值,它将不会被持久化,并且在下一次回发中将为空
您可以使用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
}
}
私有列表ID
{
获取{return(List)ViewState[“IDs”];}
设置{ViewState[“IDs”]=value;}
}
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
IDs=GetIds();
//ID将在下一次回发中可用
}
}
为什么不将它们存储在类的字段中?@Harshit检查下面的答案。@Abi-名称是类字段,而不是全局变量。它可以从同一个类中访问。为什么要在页面加载中这样做?在需要的地方这样做,例如在按钮单击事件处理程序方法中。不管怎样,每次回发时它都是空的,不确定是否需要。@TimSchmelter,我在那个类中有一个方法,它有一个foreach,它从后端验证数据。所以我想是喜欢,而不是来回发送。在页面加载时加载它,并在方法中使用它。获取的数据是静态的,它不会改变。嗯,这在每次回发时都是空的。相反,我建议只在需要的地方加载,而不是总是在页面加载中加载。如果用户在按钮上单击f.e.,则应将其加载到按钮单击事件处理程序方法中。