当我提供ASP.NET页面时,我可以并行渲染页面上的各种控件吗?

Mat*_*att 7 asp.net multithreading rendering

当我提供ASP.NET页面时,我可以并行渲染页面上的各种控件吗?

我在页面上有一些Telerik控件(RadGrids),当我逐步浏览正在加载的页面时,似乎控件是数据绑定并连续呈现.也许这种行为是因为我迷上了调试器.

无论如何加载页面并在单独的线程上构建选择控件?这在概念上是否可行,还是必须按顺序完成?

And*_*son 3

你有几个选择。您可以使用 ASP.NET 异步页面模型。这个想法是异步加载每个控件的数据,然后在检索数据时将该数据绑定到每个控件。

它看起来像这样:

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsAsync) {
        dataSource.GetDataCompleted += 
          new GetDataCompletedEventHandler(GetDataCompleted);
        dataSource.GetDataAsync();
    }
    else {
        _yourCtl.DataSource = dataSource.GetData();
        _yourCtl.DataBind();
    }
}

void GetDataCompleted(object sender, GetDataCompletedEventArgs e) {
    _yourCtl.DataSource = e.Result;
    _yourCtl.DataBind();
}
Run Code Online (Sandbox Code Playgroud)

您将为页面上的每个控件执行相同的操作。最终结果是呈现页面的时间将等于呈现最慢呈现控件的时间。

另一种方法是使用 AJAX 加载控件。我不熟悉 Telerik RadGrid 控件,但我假设它支持 AJAX。以下是 Telerik 演示页面的链接,该页面展示了如何执行 Telerik 网格的程序化客户端绑定:http://demos.telerik.com/aspnet-ajax/grid/examples/client/databinding/defaultcs.aspx