C# 如何知道WebForms控件是否第一次呈现?

C# 如何知道WebForms控件是否第一次呈现?,c#,asp.net,webforms,controls,postback,C#,Asp.net,Webforms,Controls,Postback,我有一个WebForms页面,上面有几个实例。这些控件位于选项卡式视图asp:MultiView的某些选项卡上。因此,这些控件中只有一个是可见的(如果有的话) 这些控件显示来自远程服务的当前数据。我只想在第一次显示每个控件或用户单击显式刷新按钮时从远程服务获取数据一次。该控件仅使用EnableViewState=true保存数据 我现在有 protected override void OnPreRender(EventArgs e) { base.OnPreRender(e);

我有一个WebForms页面,上面有几个实例。这些控件位于选项卡式视图asp:MultiView的某些选项卡上。因此,这些控件中只有一个是可见的(如果有的话)

这些控件显示来自远程服务的当前数据。我只想在第一次显示每个控件或用户单击显式刷新按钮时从远程服务获取数据一次。该控件仅使用EnableViewState=true保存数据

我现在有

protected override void OnPreRender(EventArgs e) {
    base.OnPreRender(e);
    Refresh(); //call the web service
    }
}
但每次显示时都会调用web服务

在页面上,我们有了!这当然不适用于控件,尤其是在以后显示时

但是如何在第一次显示时获取数据

注意:我知道我自己可以将其存储在ViewState上,但是没有办法使用现有的方法/数据吗?

试试布尔值

bool isLoaded = false;

Page_Load()
{
   if(!isLoaded)
   {
      // Actual process here like data fill and etc. . . .
      isLoaded = true;
   }
}

不幸的是,这似乎只是页面IsPostBack的一个副本,因为如果在初始页面加载时没有显示控件,那么在第一次显示控件后它不会改变。如果您认为您的问题可以被视为缓存问题,那么这可能对@jbl非常有帮助。我不知道那件事。但是,有没有可能有明确的刷新?这似乎不再可能了?在@Outputcache上的链接之后,您将看到一些VaryByParams/varyByControl属性。我想它也可以用来强制刷新,就像使用伪查询字符串参数来强制刷新ajax调用一样。虽然这样做可行,但不幸的是,我觉得这有点像我在笔记中提到的。