【问题标题】:Render ASP.Net user controls parallel并行渲染 ASP.Net 用户控件
【发布时间】:2017-01-30 03:42:38
【问题描述】:

是否可以在 aspx 页面中并行呈现两个用户控件。看起来即使数据加载被定义为异步,其他用户控件在一个用户控件正在等待数据加载时也不会呈现。

我有一个从 System.Web.UI.WebControls.GridView 继承的 CustomGridView 控件。在我的 aspx 页面中,我有几个 要呈现的 CustomGridViews 。而且在我的aspx页面中,页面定义为async=true

public class CustomGridView : GridView{
   //...
   protected override void OnPagePreLoad(object sender, EventArgs e)
   {
        Page.RegisterAsyncTask(new PageAsyncTask(GetDataAsync));
        base.OnPagePreLoad(sender, e);
   }
   private async Task GetDataAsync(){
       var data=await _service.GetDataAsync();
       this.DataSource=data;
       this.DataBind();
   }
    //...
 }

【问题讨论】:

    标签: c# asp.net .net user-controls async-await


    【解决方案1】:

    我不认为这是可能的,因为 ASP.NET WebForms 控件的呈现可能取决于呈现的顺序以及它们在控件树上的位置。

    但是,这并不妨碍在渲染之前并行加载所有数据源。

    【讨论】:

    • 问题是所有数据源似乎都不是并行加载的,因为 datasource.databind() 是从每个用户控件本身调用的。然后它等待数据加载。
    • 如果你扩展GridView,那不是自定义控件吗?用户控件扩展UserControl
    • 为什么不绑定页面代码中的数据而不是控件代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多